如何隐藏 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文件无法运行

为啥 WEB-INF 文件夹中的 jsp 文件有效,但放在 WEB-INF 下的文件夹下无效?

如何正确地将 JSP 放入 WEB-INF 文件夹中?

从URL隐藏目录

WEB-INF下的jsp文件如何访问css和js文件

JSP 中的问题:按钮 Click() 上的转发(当目标 jsp 在 web-inf 文件夹下时)