Servlet 映射:带有尾部斜杠的 URL 的 url 模式

2022-09-01 15:47:25

我有一个与 servlet 映射相关的问题。我在网络.xml中有以下内容:

<servlet>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>test.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>

如果我访问 servlet 被调用。http://localhost:<port>/MyApp/HelloWorldHelloWorldServlet

我还希望我的 servelet 响应 .如何达到这种效果?我正在使用 NetBeans 进行开发,但它不允许我放置以 .http://localhost:<port>/MyApp/HelloWorld//


答案 1

<url-pattern>

<url-pattern>/HelloWorld/*</url-pattern>

您可以使用 HttpServletRequest.getPathInfo() 获取与 URL 关联的额外路径。

例如:

http://localhost:<port>/MyApp/HelloWorld/one/

结果将是

/one/

来自 JavaDoc:

返回与客户端发出此请求时发送的 URL 关联的任何额外路径信息。额外的路径信息跟在 servlet 路径之后,但位于查询字符串之前,并且将以“/”字符开头。


答案 2

使用通配符。您可以将所有流向特定 URL 的流量重定向到同一个 servlet。例如,您可以添加以下内容:

<servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/HelloWorld/*</url-pattern>
</servlet-mapping>

这会将带有斜杠的 URL 重定向到原始 servlet。

一个想法 - 这会将任何东西重定向到这个URL模式到servlet。如果你想让其他URL通过这个URL,你应该创建一个servlet,它将重定向到正确的URL(通过查看指定的URL)。或者,您可以使用为您提供映射的框架。


推荐