web.xml url模式有问题

时间:2012-12-06 05:42:42

标签: java web.xml

在我的web.xml我有servlet的URL模式,如下所示:

<url-pattern>/*/myservice</url-pattern>

所以我想将blablabla/myservice称为anyWord/myservice

但它不起作用。它仅在我使用此URL调用它时才起作用:/*/myservice(URL中带星号)。

3 个答案:

答案 0 :(得分:2)

你做不到。 根据Servlet 2.5规范(在规范的其他级别没有什么不同),第SRV.11.2章:

  • /字符开头并以/*后缀结尾的字符串 用于路径映射。
  • *.前缀开头的字符串用作扩展名映射。
  • 仅包含/字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径是请求URI减去上下文路径和 路径信息为空。
  • 所有其他字符串仅用于完全匹配。

您的案件属于第4个子弹,因此使用了精确的映射。

为避免这种情况,请使用/(第三种情况)的映射。将所有请求映射到特定的servlet,并让该servlet将请求重新路由到某种处理程序(其他servlet或某些自定义类)。

例如:

<url-pattern>/</url-pattern>
<servlet-name>MyServlet</servlet-name>

然后,在MyServlet的代码中,检查您在请求中收到的URL(使用request.getPathInfo())并使用该值将请求转发给其他处理程序。

答案 1 :(得分:1)

您可以在网址格式为/ *时使用过滤器,并在过滤器内决定您需要哪个重定向。

<filter>
<display-name>MyFilter</display-name>
<filter-name>MyFilter</filter-name>
<filter-class>com.MyfilterClass</filter-class>

<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</filter>

答案 2 :(得分:0)

两个ULR映射部分怎么样?

  <servlet-mapping>  
    <servlet-name>ModifyMemberSVL</servlet-name>  
    <url-pattern>/ModifyMember</url-pattern>  
  </servlet-mapping>  
  <servlet-mapping>  
    <servlet-name>ModifyMemberSVL</servlet-name>  
    <url-pattern>/Administration/Add_Member/ModifyMember</url-pattern>  
  </servlet-mapping>