我如何使用通配符来映射java servlet中的url

时间:2014-01-17 16:27:09

标签: java servlets

我想实现这个目标:

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>

表示上述所有网址的一种模式

任何人都可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

rules for mappings如下

  

在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>