当前位置: 首页 > 知识库问答 >
问题:

在WEB-INF文件夹的子文件夹中访问JSP?

邢晗日
2023-03-14

我刚刚开始使用JSP,遇到了一个问题。

据我所知,WEB-INF下的JSP页面可以通过浏览器在localhost中使用URL进行访问:

localhost:8080/MyProject/MyJSP.jsp

但是,如果我在WEB-INF文件夹(即'MyFolder')中创建另一个子文件夹,并尝试通过URL访问相同的JSP页面:

localhost:8080/MyProject/MyFolder/MyJSP。jsp

它给出了一个错误404。JSP文件导航系统与HTML文件导航系统有区别吗?

编辑:我正在使用servlet来显示我的JSP页面:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.sendRedirect("MyJSP.jsp");
}

EDIT2:我已经按照建议将重定向更改为requestDispatcher:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/MyFolder/MyJSP.jsp");
dispatcher.forward(request, response);
}

如果我的@WebServlet是(“/myjsp”),任何人仍然可以访问我的myjsp。jsp页面,如果他们键入localhost:8080/MyProject/myjsp

共有2个答案

庞书
2023-03-14

“/WEB-INF/”被视为受保护/受保护的文件夹,除非确实需要,否则不建议访问它。如果您仍然希望这些文件可用,请尝试在web中添加以下servlet映射。xml。希望有帮助

<servlet>
<servlet-name>MyJSP</servlet-name>
<jsp-file>/WEB-INF/MyFolder/*</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>MyJSP</servlet-name>
<url-pattern>/ViewMyJsp.jsp</url-pattern>
</servlet-mapping>

可以通过在部署描述符中使用元素声明映射来显式指定映射。而不是

瞿博学
2023-03-14

据我所知,WEB-INF下的JSP页面可以通过URL位于localhost中的浏览器访问

不,恰恰相反。浏览器无法访问WEB-INF下的所有内容。

将它们放在那里是一个很好的实践,因为您永远不希望任何人直接从浏览器访问JSP。JSP是视图,请求应该首先通过控制器,然后控制器将分派(即转发,而不是重定向,请参阅请求Dispatcher.forward()vs HttpServletResponse.send重定向())到正确的视图。

 类似资料:
  • 如何将本地存储文件夹中的JSP文件包含在WEB-INF下? 我在config.properties定义了绝对路径${externalFolder}到包含外部jsp文件的文件夹,控制器映射到 /page和jsp页面page.jsp在WEB-INF/jsp/目录中。 在此文件页面中。我想调用的jsp: WEB-INF/jsp/page。jsp 谢谢你的帮助。

  • 我正在尝试访问WEB-INF文件夹中的内容,并将该文件使用到我的JAXB解组函数中,但我尝试了所有方法,但没有成功。首先,我使用jersey和grizzly服务器在本地测试它,但现在我想将它移动到tomcat服务器上,并使用.war文件部署它,该文件具有WEB-INF文件夹和index.html。 我有3个包(资源,模型和主要包)。 在其中一个(模型)中,我有一个类,我正在使用这个解组函数对WEB

  • 问题内容: 我的App Engine项目的war / WEB-INF文件夹中有一个文件。我在FAQ中读到,您可以在servlet上下文中从那里读取文件。我不知道如何形成资源的路径: 我将如何构造到该资源的路径以与File()一起使用,就像上面一样? 问题答案: 有两种方法可以做到这一点。只要扩展WAR文件(一组文件而不是一个.war文件),就可以使用以下API: http://tomcat.apa

  • 问题内容: 当我的jsp文件位于WEB-INF文件夹(如/WEB-INF/file.jsp)中时,我可以从本地主机访问它们:8080 / ProjectCtxtRoot /,但是如果将它们放在/ WEB-中,则无法访问它们。 INF / jsp / file.jsp? 我更改了web.xml中的welcome-list标记中的路径,如下所示 我还更改了dispatcher-servlet.xml,

  • 我在web.xml中更改了welcome-list标记中的路径,如下所示 我还更改了dispatcher-servlet.xml,如下所示 但还是没用。用于上述大小写的Url是 而且它对上面的任何URL都不起作用。 但它起作用的时候 我使用TomcatV7.0服务器。我在Eclipse IDE中刷新我的项目,然后清理它,构建它,使用mvn clean install构建war,然后从tomcat

  • 如何在Eclipse中配置Java动态Web项目,使Web-INF/lib文件夹位于子文件夹中? 例如,假设我希望我的“lib”文件夹位于此处: src/main/webapp/WEB-INF/lib 我的webapp根在这里: src/main/webapp/ 如何在Eclipse中配置此功能?我知道我可以“添加jar”,但我希望它们被组织在我的应用程序构建路径库部分的“Web应用程序库”部分。