您的位置:首页 > 其它

url-pattern编写形式:【/与/*的区别】【url-pattern可以编写多个】

2016-08-28 09:42 369 查看
         * 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/demo/hello.html,我的应用上下文是test,容器会将http://localhost/demo去掉,剩下的/hello.html部分拿来做servlet的映射匹配。
         * 容器会首先查找完全匹配,如果找不到,再查找目录匹配,如果也找不到,就查找扩展名匹配。如果还没有找到一个servlet,器将尝试为请求的资源使用内容服务,如果应用定义了一个默认servlet,则容器会将请求丢给默认servlet。
         * 如果一个请求匹配多个“目录匹配”,容器会选择最长的匹配。如:servletA的url-pattern为/user/*,而servletB的url-pattern为/user/hello/*,此时访问http://localhost/demo/user/hello时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。


路径精确匹配方式:

<url-pattern>/hello</url-pattern>                                                     精确匹配

<url-pattern>/system/hello</url-pattern>                                        精确匹配

<url-pattern>/system/testPath/welcome</url-pattern>                   精确匹配
<url-pattern>/system/testPath/welcome.do</url-pattern>              精确匹配
<url-pattern>/system/testPath/welcome.action</url-pattern>        精确匹配

<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>com.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/hello</url-pattern>
<url-pattern>/system/hello</url-pattern>
<url-pattern>/system/testPath/welcome</url-pattern>
<url-pattern>/system/testPath/welcome.do</url-pattern>
<url-pattern>/system/testPath/welcome.action</url-pattern>
</servlet-mapping>


路径扩展匹配方式
<url-pattern>/user/*</url-pattern>                                                      扩展匹配
<url-pattern>/*</url-pattern>                                                               扩展匹配

<url-pattern>/</url-pattern>                                                                扩展匹配

<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>

                <url-pattern>/</url-pattern>  会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url

                <url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)

                <url-pattern>/</url-pattern>  不会匹配到*.jsp,不会进入spring的DispatcherServlet类

                <url-pattern>/*</url-pattern> 会匹配*.jsp,导致进入spring的DispatcherServlet类,然后去寻找controller,接着找不到对应的controller所以报错。

                所以要在spring-servlet.xml文件中配置如下:

                <!--让spring前端控制器跳过静态的资源请求 location路径, /resources/**这个文件夹下所有资源全部跳过 -->
        <mvc:resources mapping="/resources/**" location="/resources/" />

路径后缀匹配方式:【注意后缀匹配开始路径不需要编写“/”】
     
<url-pattern>*.do</url-pattern>                                                           后缀匹配
<url-pattern>*.action</url-pattern>                                                      后缀匹配

<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


希望对你有帮助,祝你有一个好心情,加油!

转载请注明出处,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息