在我的web.xml
我有这样的 servlet URL 模式:
<url-pattern>/*/myservice</url-pattern>
所以我想使用 blablabla/myservice
来调用它也如anyWord/myservice
.
但是这不起作用。仅当我使用此 URL 调用它时它才有效: /*/myservice
(网址中带有星号)。
最佳答案
你不能这么做。 根据 Servlet 2.5 规范(在规范的其他级别中情况并没有那么不同),SRV.11.2 章:
- 以
/
字符开头并以/*
后缀结尾的字符串 用于路径映射。 - 以
*.
前缀开头的字符串用作扩展映射。 - 仅包含
/
字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet 路径是请求 URI 减去上下文路径, 路径信息为空。 - 所有其他字符串仅用于精确匹配。
您的案例属于第四条,因此使用精确映射。
要避免这种情况,请使用 /
映射(第三种情况)。将所有请求映射到特定 servlet,并让该 servlet 将请求重新路由到某种类型的处理程序(其他 servlet 或某些自定义类)。
例如:
<url-pattern>/</url-pattern>
<servlet-name>MyServlet</servlet-name>
然后,在 MyServlet
的代码中,检查您在请求中收到的 URL(使用 request.getPathInfo()
)并使用该值转发向其他处理程序发出请求。
关于java - web.xml url 模式出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13737619/