如何隐藏 WEB-INF 文件夹中的 JSP 文件? [复制]
Posted
技术标签:
【中文标题】如何隐藏 WEB-INF 文件夹中的 JSP 文件? [复制]【英文标题】:How can I hide the JSP file in WEB-INF folder? [duplicate] 【发布时间】:2013-11-19 13:22:34 【问题描述】:例如,在一个简单的 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
这意味着无法使用浏览器访问此文件。 (就像输入网址一样)
您还可以获取请求调度程序并将请求和响应对象转发到 JSP 文件,例如 .getRequestDispatcher("/test.jsp")
。但随后文件将在
webapps\testapplication\test.jsp
所以连接到 http:\\server.com\test.jsp 也会得到这个文件。
我想将文件隐藏在 WEB-INF 文件夹中,以便客户端无法访问,除了我提供的映射。
这样做的适当方法是什么?
【问题讨论】:
隐藏WEB-INF文件夹中的文件是什么意思? . 我希望文件放在 WEB-INF 文件夹下。 jsp 文件。 照常BalusC给出正确答案:***.com/questions/4229035/… 【参考方案1】:我想把文件隐藏在 WEB-INF 文件夹中,这样客户端就无法访问了。
将你的jsp文件保存在WEB-INF
下,例如(WEB-INF/jsp)
,这样默认情况下Web Containers不允许客户端直接访问WEB-INF文件夹下的资源,但是RequestDispatcher
可以访问它。
request.getRequestDispatcher("/WEB-INF/test.jsp").forward(request, response);
【讨论】:
但我的问题是,在 java servlet 中,我应该如何给出 jsp 文件的路径?像 getRequestDispatcher("WEB-INF/test.jsp") 吗?这是正确的方法吗? 您的回答不正确,如果您更正,我会将其标记为已接受。 谢谢@KorayTugay :)。我错过了给出完整的代码 sn-p 行。现在我已经更正了。 “默认情况下 Web 容器 [do] 不允许直接访问 WEB-INF 文件夹下的资源” - Jetty 似乎并非如此。 Jetty 很乐意在 WEB-INF 下提供所有内容。【参考方案2】:如果你使用的是jsf,你可以把这个文件放在WEB-INF文件夹中,使用导航规则将请求映射到页面。但如果不是,您可以创建一个过滤器并使用 <url-pattern>
属性将其映射到 url "/test.jsp" 并重定向到您想要的任何位置(如 WEB-INF 中的页面)。
【讨论】:
以上是关于如何隐藏 WEB-INF 文件夹中的 JSP 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
eclipse WEB-INF下文件夹中的jsp文件无法运行