在我web.xml
我有这样的servlet的URL模式:麻烦与web.xml中的URL模式
<url-pattern>/*/myservice</url-pattern>
所以我想用blablabla/myservice
也作为anyWord/myservice
调用它。
但它不起作用。它只有在我使用以下URL调用它时才有效:/*/myservice
(在URL中带有星号)。
在我web.xml
我有这样的servlet的URL模式:麻烦与web.xml中的URL模式
<url-pattern>/*/myservice</url-pattern>
所以我想用blablabla/myservice
也作为anyWord/myservice
调用它。
但它不起作用。它只有在我使用以下URL调用它时才有效:/*/myservice
(在URL中带有星号)。
你不能那样做。 根据servlet 2.5规范(和东西都不在本说明书的其他层次,不同的),章节SRV.11.2:
/
字符,并用/*
后缀 结束用于用于路径映射。*.
前缀开头的字符串用作扩展名映射。/
字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径是请求URI减去上下文路径,并且路径信息为空。您的情况属于第4个项目符号,因此使用精确映射。
为了规避这种情况,请使用/
(第三种情况)的映射。将所有请求映射到特定的servlet,并让该servlet将请求重新路由到某种类型的处理程序(其他servlet或某些自定义类)。
例如:
<url-pattern>/</url-pattern>
<servlet-name>MyServlet</servlet-name>
然后,MyServlet
的代码内,检查(使用request.getPathInfo()
),您在请求中接收的URL,并使用值将所述请求转发至其他处理程序。
您可以使用过滤器,而您的网址格式为/ *,并且在过滤器内部决定您需要的重定向。
<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>
什么约两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>
这将需要OP在每次将新限定符添加到其URL模式时更改其“web.xml”。 – Isaac
嗯,好的,谢谢。但是你可以在我的案例中提出什么建议? – MyTitle
我写了我的建议,在编辑。尝试刷新页面。 – Isaac