如何在WEB-INF文件夹中隐藏JSP文件?

时间:2013-11-07 18:24:22

标签: jsp servlets web-inf requestdispatcher

在一个简单的Java Web应用程序中,例如假设您有一个servlet TestServlet.java。在部署描述(web.xml)中,您可以将来自/testpage的请求映射到TestServlet,以便在请求/testapplication/testpage时TestServlet处理请求。例如,您可以编写“Hello World”并发送响应。

在目录结构(部署到Web服务器的应用程序)中,TestServlet.java将驻留在:

webapps\testapplication\WEB-INF\classes\com\packagename\TestClass.java

这意味着无法使用浏览器访问此文件。 (比如输入网址)

您还可以获取请求调度程序并将请求和响应对象转发到.getRequestDispatcher("/test.jsp")之类的JSP文件。但是文件将在

webapps\testapplication\test.jsp

所以连接到http:\\ server.com \ test.jsp也会得到这个文件。

我想将文件隐藏在WEB-INF文件夹中,因此除了我提供的映射之外,客户端无法访问该文件。

这样做的适当方法是什么?

2 个答案:

答案 0 :(得分:8)

  

我想将文件隐藏在WEB-INF文件夹中,以便客户端无法访问该文件。

将jsp文件保留在WEB-INF下,例如 - (WEB-INF/jsp),这样默认情况下,Web容器不允许客户端直接访问WEB-INF文件夹下的资源,{{1}可以访问它。

RequestDispatcher

答案 1 :(得分:0)

如果您使用的是jsf,则可以将此文件放在WEB-INF文件夹中,并使用导航规则将请求映射到页面。但是如果你不是,你可以使用<url-pattern>属性创建一个过滤器并将其映射到url“/test.jsp”并重定向到你想要的任何地方(如WEB-INF中的页面)。