gpt4 book ai didi

java - Servlet 映射直接 JSP 文件而不是使用 Servlet 来管理 URL 请求

转载 作者:行者123 更新时间:2023-11-30 07:16:37 26 4
gpt4 key购买 nike

我正在我的 Java 网络应用程序中重做 URL 映射结构。我正在尝试找到将 servelet 和资源映射到它们正确的 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 中,哪种方法更有效、更合适?

最佳答案

我将两者结合使用,我在 web.xml 中定义了所有静态页面,并在 web.xml 的末尾创建了一个处理动态页面的包罗万象的页面。

所以home、about、login等都是静态页面,在web.xml中定义像 account/abc 和 blog/some-random-article 这样的东西是动态处理的。

<servlet>
<servlet-name>NotFound</servlet-name>
<servlet-class>com.site.PageNotFoundServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>NotFound</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

如果在您的 servlet 代码中,如果您不知道如何处理该 url,换句话说,该 url 类似于您不处理的/asdfadfasdf,如果该 url 以/blog 开头,则返回 404 (来自/blog/random-article),进入以随机文章为内容的博客页面。

关于java - Servlet 映射直接 JSP 文件而不是使用 Servlet 来管理 URL 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16746212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com