我正在我的 Java Web 应用程序中重做 URL 映射结构。我试图找到最有效和最合适的方法来将服务小程序和资源映射到它们的正确 URL。
我已经能够创建两种策略,但我不确定哪个更有效。
将所有 url 映射到一个处理请求的 Servlet
在这种情况下,我有一个名为“URL”的 Servlet,具有以下 servlet 映射:
<servlet-mapping>
<servlet-name>url</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
url Servlet 的设置类似于示例,并且工作正常:
String task = request.getRequestURI().substring(request.getContextPath().length());
if ("/home".equals(task)){
RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/home.jsp");
dispatcher.forward(request, response);
}
我最初遇到的问题是没有提供所有静态资源,例如 JS、图像等。作为解决方案,我可以选择为静态内容创建单独的目录,但我突然转而将其全部映射到 web.xml 中。
直接在 web.xml 中映射所有内容。
在这种情况下,url 模式直接映射到 JSP 和 Servlet,如下所示:
<servlet>
<servlet-name>home</servlet-name>
<jsp-file>/jsp/Home.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>home</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>
例子:
localhost:8080/home <- home.jsp
localhost:8080/about <- about.jsp
localhost:8080/login <- doLogin servlet
这些不好吗?将 url 映射到其预期的 JSP 文件和 Servlet 的更有效和正确的方法是什么?