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

         * 当一个请求发送到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>

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

转载请注明出处,谢谢。


  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值