我想将文件隐藏在Web-Inf文件夹中,以便客户端无法联系。
将您的JSP文件放在下面 WEB-INF
例如 - (WEB-INF/jsp)
, ,因此默认情况下,Web容器不允许客户直接访问Web-Inf文件夹的资源,而是 RequestDispatcher
可以访问它。
request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request, response);
题
在简单的Java Web应用程序中,例如,想象您有一个Servlet Testservlet.java。在部署描述(web.xml)中,您可以映射即将说的请求 /testpage
测试服务,以便什么时候 /testapplication/testpage
请求的是Testservlet处理请求。例如,您可以写“ Hello World”并发送响应。
在目录结构(部署到Web服务器的应用程序)中,TestServlet.java将居住:
webapps\testapplication\WEB-INF\classes\com\packagename\TestClass.java
这意味着无法使用浏览器进入此文件。 (就像输入URL)
您还可以获取请求调度程序,并将请求和响应对象转发到JSP文件之类的 .getRequestDispatcher("/test.jsp")
. 。但是该文件将在
webapps\testapplication\test.jsp
因此,连接到http: server.com test.jsp也将获取此文件。
我想将文件隐藏在Web-Inf文件夹中,以便客户无法与我提供的映射除外。
这样做的适当方法是什么?
解决方案
我想将文件隐藏在Web-Inf文件夹中,以便客户端无法联系。
将您的JSP文件放在下面 WEB-INF
例如 - (WEB-INF/jsp)
, ,因此默认情况下,Web容器不允许客户直接访问Web-Inf文件夹的资源,而是 RequestDispatcher
可以访问它。
request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request, response);
其他提示
如果您使用的是JSF,则可以将此文件放入Web-Inf文件夹中,并使用导航规则将请求映射到页面。但是,如果不是,则可以创建过滤器并使用该滤镜将其映射到URL“/test.jsp” <url-pattern>
属性和重定向到您想要的任何地方(例如Web-Inf中的页面)。