我正在使用MVC并希望将我的JSP页面放在WEB-INF中以避免直接访问它。我有一个index.jsp页面和Web内容的jsp文件夹中的其他页面,它的工作原理。它看起来像这样:
-Web Content
-index.jsp
-jsp
--main_read.jsp
--...
顺便说一下,index.jsp是我的登录页面,用户是否已登录,在控制器中我使用
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("jsp/main_read.jsp");
dispatcher.forward(request, response);
我工作得很完美,但是当我试图将我的JSP放入WEB-INF时它失败了:
-Web Content
-index.jsp
-WEB-INF
--jsp
---jsp
----main_read.jsp
----...
并给出这样的错误
HTTP Status 404 - /Libruary/jsp/main_read.jsp
type Status report
message /Libruary/jsp/main_read.jsp
description The requested resource (/Libruary/jsp/main_read.jsp) is not available.
Apache Tomcat/6.0.26
可能问题出现在页面路径中,我写在dispatcher.forward
,但无论如何,请帮助我。
答案 0 :(得分:8)
您似乎传递了路径/jsp/main_read.jsp
,而JSP位于/WEB-INF/jsp/jsp/main_read.jsp
中。显然,路径不匹配。将正确的路径传递到getRequestDispatcher()
:/WEB-INF/jsp/jsp/main_read.jsp
。
javadoc说:
路径名必须以/开头,并被解释为相对于 当前上下文根