我想实现这个目标:
http:\\localhost:8080\mysite\search\cotton\search.html
http:\\localhost:8080\mysite\search\bean\search.html
http:\\localhost:8080\mysite\search\cosmetic\search.html
http:\\localhost:8080\mysite\search\shoe\search.html
<servlet-mapping>
<servlet-name>abcSearch</servlet-name>
<url-pattern>/search/*/search.html</url-pattern>
</servlet-mapping>
表示上述所有网址的一种模式
任何人都可以帮帮我吗?
答案 0 :(得分:1)
在Web应用程序部署描述符中,使用以下语法 用于定义映射:
以“/”字符开头并以“/ *”后缀结尾的字符串 用于路径映射。
以'*。'前缀开头的字符串用作扩展名映射。
空字符串(“”)是一个精确映射到的特殊URL模式 应用程序的上下文根,即表单的请求
http://host:port/<context-root>/
。在这种情况下,路径信息是'/' servlet路径和上下文路径为空字符串(“”)。仅包含'/'字符的字符串表示“默认” 应用程序的servlet。在这种情况下,servlet路径是 请求URI减去上下文路径,路径信息为空。
所有其他字符串仅用于完全匹配。
所以这个
/search/*/search.html
完全匹配
http://host/context/search/*/search.html
你不能在路径中间使用Servlet的url-patterns获得路径匹配。
如果您只有4条路径,我建议您在每个确切路径匹配时添加4个<servlet-mapping>
元素。
答案 1 :(得分:0)
尝试更改以下网址:
http:\\localhost:8080/mysite/search/cotton
http:\\localhost:8080/mysite/search/bean
http:\\localhost:8080/mysite/search/cosmetic
http:\\localhost:8080/mysite/search/shoe
或者那样:
http:\\localhost:8080/mysite/cotton/search.html
http:\\localhost:8080/mysite/bean/search.html
第一种情况模式为<url-pattern>/search/*</url-pattern>
,第二种情况为<url-pattern>*/search.html</url-pattern>