“/”和“/ *”有什么区别?

时间:2013-10-28 09:27:48

标签: java servlets servlet-filters

我试图谷歌这个问题但是,似乎谷歌搜索引擎将其视为一些特殊字符。

那么将服务器映射到"之间的区别是什么? /"和#34; / *" ?

3 个答案:

答案 0 :(得分:2)

SRV.11.2 Specification of Mappings

‘/’字符开头并以‘/*’后缀结尾的字符串用于路径映射。

  • ‘*.’前缀开头的字符串用作扩展名 映射。
  • 仅包含‘/’字符的字符串表示“默认” 应用程序的servlet。在这种情况下,servlet路径是 请求URI减去上下文路径,路径信息为空。

所有其他字符串仅用于完全匹配。

我的重点

<servlet-mapping>
        <servlet-name>XServlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

如果您看到映射XServlet映射到匹配所有请求,并且每个请求都会XServlet

在哪里

 <servlet-mapping>
            <servlet-name>XServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

现在XServlet是我的默认应用程序servlet,它提供static个资源。

只是为了澄清进一步的混淆:How to access static resources when mapping a global front controller servlet on /*

答案 1 :(得分:1)

模式/将使您的servlet成为应用程序的默认servlet,而模式/ *将强制通过您的servlet的所有内容。

答案 2 :(得分:0)

如果您映射到/只有一个网址匹配:您的服务器网址(http://my.example.org/)。 如果你映射到/ *很多网址会匹配:http://my.example.org/logo.gifhttp://my.example.org/index.jsphttp://my.example.org/detail.html等等。

如果你只有1个servlet,并且你的资源不在你的webapp的根目录下,那么使用/可能很有用(无论如何都不应该这样)。