我已经设置了许多Java Server Page,并且我想通过添加Process Servlet(扩展HttpServlet)来使用Controller / View系统。
我只想在ProcessServlet添加一些属性后基本上按常规处理所请求的JSP。
假设我所有的JSP都位于名为/ content /的目录中,并且我的web.xml文件具有将/content/*.jsp映射到我的ProcessServlet的规则
我无法找到一种方法将所有JSP移到另一个目录(/ content-JSPs /),以便可以将它们分派到它们,而不必无休止地遍历ProcessServlet。
有没有一种方法可以基本上将#forward()(其他方法?)分派给所请求的JSP,而无需再次通过ProcessServlet?
很难相信这种缺乏灵活性的存在。为什么Servlet不能仅充当JSP的传递?
我的目标是设置所有内容,以便Web服务器不必为所有JSP拥有单独的目录,而为其他所有东西(例如CSS,JavaScript和图像)拥有另一个目录。我想保持目录结构(和URL结构)不变。
将它们放在/WEB- INF文件夹中。这也有效地使JSP远离直接访问。您只需要更改RequestDispatcher#forward()呼叫以包括/WEB- INF在路径中即可。
/WEB- INF
RequestDispatcher#forward()
request.getRequestDispatcher("/WEB-INF/content" + request.getPathInfo()).forward(request, response);
请注意,的网址格式在/content/*.jsp语法上无效。应该是/content/*。也许您也确实使用过。要跳过如图像/ CSS / JS静态资源,你应该只是没有把他们在/content,但在例如/resources,/static等等。
/content/*.jsp
/content/*
/content
/resources
/static