在我的web.xml
我有servlet的URL模式,如下所示:
<url-pattern>/*/myservice</url-pattern>
所以我想将blablabla/myservice
称为anyWord/myservice
。
但它不起作用。它仅在我使用此URL调用它时才起作用:/*/myservice
(URL中带星号)。
答案 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>