java - 在 Spring Controller 中加载静态文件

标签 java spring-mvc

我是 Spring 的新手,如果我在这里没有看到明显的答案,我深表歉意。

我使用 Spring MVC Controller 设置了小型演示项目并将其部署到 App Engine。在我的 Controller 中,我想将静态文件的内容读入字符串。这样做的最佳方式是什么?

我用谷歌搜索了一下,但我可能在搜索错误的东西。我尝试了以下方法,但它不起作用:

@Controller
@RequestMapping("/myController")
public class MyController {

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public @ResponseBody String myTest() {

        FileReader fileReader = null;
        BufferedReader bufferedReader = null;
        String content = "";
        try {
            fileReader = new FileReader("file:/WEB-INF/content/somecontent.txt");
            bufferedReader = new BufferedReader(fileReader);
            content = bufferedReader.readLine();
            bufferedReader.close(); 
        }
        catch (Exception ignored) { 
            // ignore
        }
        return content;
    }
}

任何朝着正确方向的努力都将受到高度赞赏:-)

最佳答案

一般的 Servlet 容器,尤其是 GAE,不会让您像那样在 servlet 容器内使用文件 API。

相反,使用 ServletContext Autowiring 您的 Controller ,并从中获取资源。此外,您的异常处理不是很好,您不应该忽略这样的异常,它们存在是有原因的。

类似的东西应该没问题:

@Controller
@RequestMapping("/myController")
public class MyController {

    private @Autowired ServletContext servletContext;

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public @ResponseBody String myTest() throws IOException {
        InputStream inputStream = null;
        try {
            inputStream = servletContext.getResourceAsStream("/WEB-INF/content/somecontent.txt");
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            return bufferedReader.readLine();
        } finally {
            if (inputStream != null) {
               inputStream.close();
            }
        }
    }
}

或者,如果您使用的是 Spring 3.x,这可能会更简单:

<mvc:view-controller path="/test" view-name="/WEB-INF/content/somecontent.txt"/>

See docs for what this does ,但这可能意味着您可以避免任何代码。

关于java - 在 Spring Controller 中加载静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5146570/

相关文章:

java - 无法从 Java 连接到远程 Geode 集群

java - 在 Java 泛型中创建类型对象

java - 在 Java 中将对象映射到整数 - 使用数组还是映射?

java - 如何获取 href 中的 2 个参数 - Spring MVC?

java - 在 Spring Web 服务器中创建线程以运行超时任务

java - 当 validator 发现表单错误时,表单页面将在 POST url 处重新显示

java - 如何在windows和linux环境下打开一个文件夹路径?

java - java中用于非轴对齐框的简单快速碰撞算法

java - Spring - 映射多个 url 模式

java - 在spring的tiles配置文件中有一个类似/{1}.jsp的配置