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

时间:2018-10-01 21:37:05

标签: java eclipse jsp web-inf

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

据我了解,WEB-INF下的JSP页面可以通过浏览器使用本地主机中的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 个答案:

答案 0 :(得分:3)

  

据我了解,WEB-INF下的JSP页面可以通过浏览器使用本地主机中的URL进行访问

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

将它们精确地放置在其中是一个好习惯,因为您永远不希望任何人直接从浏览器访问JSP。 JSP是视图,请求应首先通过控制器,然后控制器将其分发(即转发,而不是重定向,请参见enter image description here)到正确的视图。

答案 1 :(得分:0)

format被认为是受保护的文件夹,除非真正需要,否则建议不要使其可访问。如果仍要使这些文件可用,请尝试在web.xml中添加以下servlet映射。希望对您有帮助

value

您可以通过在部署描述符中使用元素进行声明来明确指定映射。您可以使用从WAR根目录到JSP文件的路径来指定export type ColumnDefinition<T, F extends (item: T) => unknown> = { label?: string; numeric?: boolean; value: F; format?: (value: ReturnType<F>) => string; }; 元素,而不是'/WEB-INF/'元素。