java - 从 WEB-INF 内的 JSP 访问文件

标签 java jsp servlets web-applications

我有一个.jsp由 servlet 调用来处理数据。 我正在尝试使用本地文件对其进行测试,我的目录当前如下所示:

WEB-INF
    |----jsp
        |----test.jsp
    |----data.txt

我的.jsp甚至无法进行基本的文件读取:

<%
    String in = "../data.txt";
    BufferedReader br = new BufferedReader(new FileReader(in));
    out.println(br.readLine());
%>

我还尝试了许多其他变体:

= "data.txt"
= "./data.txt"
= "/data.txt"
= "file:///data.txt"
= "file://data.txt"
= "WEB-INF/data.txt"

等等,并且无法从文件中读取。
我对 servlet 还很陌生,所以我可能在这里缺少一个关键的交互,如果有人能向我展示如何从 .jsp 访问文件的规范的“hello world”版本,我将不胜感激。在WEB-INF .

最佳答案

这里有几个问题。

  1. 最重要的是JSP是显示技术。您不应该尝试在 jsp 中执行任何不仅仅是显示环境提供的某些数据(例如由 servlet 设置的 HttpResponse 属性)的操作。您当然不应该尝试从 jsp 访问文件系统。

  2. 即使来自 servlet,您也不应该这样做。您应该将该文件放入类路径中,并使用 getClass().getClassLoader().getResourcegetResourceAsStream。可以直接从 Web 应用程序访问文件系统中的文件,但不建议这样做,而且不可移植。

编辑:@LocHa 的答案可能会起作用,但你真的不应该这样做。

关于java - 从 WEB-INF 内的 JSP 访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24144126/

相关文章:

java - 通过蓝牙在 Android 手机和运行 OS X 的笔记本电脑之间发送数据

java - 从 InputStream 读取文本和二进制数据

java - Spring Batch ItemWriter Java

java - 反转队列的内容

java - 如何检索<s :radio> within <s:iterator> tag into Struts2's action的数据

java - 从 Weblogic 迁移到 Apache Tomcat

java - android 线程和处理程序 - 从后台线程更改 UI 对象

java - 用户注册与电子邮件验证

java - 如何修复这个函数总是返回 false

http - 应如何指定文档的响应内容类型以便跨浏览器一致地工作?