在一个简单的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文件夹中,因此除了我提供的映射之外,客户端无法访问该文件。
这样做的适当方法是什么?
答案 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中的页面)。