Servlet映射:具有尾部斜杠的URL的url-pattern

时间:2010-12-07 14:15:10

标签: java tomcat servlets netbeans web.xml

我遇到了与servlet映射有关的问题。我在web.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>

如果我访问http://localhost:<port>/MyApp/HelloWorld,则调用servlet HelloWorldServlet

我还希望我的服务器回复http://localhost:<port>/MyApp/HelloWorld/。我怎样才能达到这个效果?我正在使用NetBeans进行开发,但它不允许我使用/结束模式。

2 个答案:

答案 0 :(得分:29)

<url-pattern>

上添加通配符后
<url-pattern>/HelloWorld/*</url-pattern>

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

E.g。

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

结果将是

/one/

来自JavaDoc:

  

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

答案 1 :(得分:7)

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

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

这将使用斜杠将URL重定向到原始servlet。

一想法 - 这会将任何内容重定向到这个URL模式到servlet。如果您希望其他URL超过此URL,则应创建一个将重定向到正确URL的servlet(通过查看指定的URL)。或者,您可以使用为您提供映射的框架。