使用原始的ServletAPI即HttpServletResponse对象,不可以访问/WEB-INF下的资源。
时间: 2023-12-03 11:43:39 浏览: 84
是的,Servlet规范确实规定了/WEB-INF目录下的资源不能被客户端直接访问,以保护应用程序的安全性。但是,Servlet容器提供了一种专门的方法来访问/WEB-INF目录下的资源,即通过ServletContext.getResourceAsStream()方法。你可以使用这个方法来获取/WEB-INF目录下的资源的内容,并将其作为响应返回给客户端。以下是一个示例代码:
```
@WebServlet("/myServlet")
public class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = getServletContext();
InputStream is = context.getResourceAsStream("/WEB-INF/myfile.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
response.getWriter().println(line);
}
}
}
```
在这个示例中,我们使用ServletContext.getResourceAsStream()方法来获取/WEB-INF/myfile.txt文件的输入流,然后使用BufferedReader逐行读取文件内容,并将其写入响应输出流中。这样,客户端就可以通过访问MyServlet来间接获取/WEB-INF/myfile.txt文件的内容了。
阅读全文