从WEB-INF内的JSP访问文件

0 java jsp servlets web-applications

我有一个.jspservlet调用来处理数据.我试图用本地文件测试它,我的目录目前看起来像这样:

WEB-INF
    |----jsp
        |----test.jsp
    |----data.txt
Run Code Online (Sandbox Code Playgroud)

.jsp甚至无法读取基本文件:

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

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

= "data.txt"
= "./data.txt"
= "/data.txt"
= "file:///data.txt"
= "file://data.txt"
= "WEB-INF/data.txt"
Run Code Online (Sandbox Code Playgroud)

等,并且无法从文件中读取.
我还是新的servlets,所以我大概在这里失去了一个关键的相互作用和将不胜感激,如果有人可以告诉我基本上是如何从一个访问文件规范的"Hello World"版本.jspWEB-INF.

Gre*_*eek 5

这里有几个问题.

  1. 最重要的是JSP是显示技术.你不应该试图在jsp中做任何事情,而不仅仅是显示环境提供的一些数据(例如HttpResponse由servlet设置的属性).你当然不应该尝试从jsp访问文件系统.

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

编辑:@ LocHa的答案可能会奏效,但你真的不应该这样做.