一尘不染

Servlet和JSP。一个简单的请求?

jsp

我已经设置了许多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结构)不变。


阅读 219

收藏
2020-06-10

共1个答案

一尘不染

将它们放在/WEB- INF文件夹中。这也有效地使JSP远离直接访问。您只需要更改RequestDispatcher#forward()呼叫以包括/WEB- INF在路径中即可。

request.getRequestDispatcher("/WEB-INF/content" + request.getPathInfo()).forward(request, response);

请注意,的网址格式在/content/*.jsp语法上无效。应该是/content/*。也许您也确实使用过。要跳过如图像/ CSS /
JS静态资源,你应该只是没有把他们在/content,但在例如/resources/static等等。

2020-06-10