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> 精确匹配
路径扩展匹配方式:
<url-pattern>/user/*</url-pattern> 扩展匹配
<url-pattern>/*</url-pattern> 扩展匹配
<url-pattern>/</url-pattern> 扩展匹配
<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,器将尝试为请求的资源使用内容服务,如果应用定义了一个默认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>
希望对你有帮助,祝你有一个好心情,加油!
转载请注明出处,谢谢。
相关文章推荐
- spring MVC url-pattern的/和/*有区别
- servlet url pattern: /* 和 / 区别
- 多个项目分享到git上只要修改这里的url就可以随时切换项目上传
- web.xml中的url-pattern标签/和/*有什么区别
- <url-pattern>写成/和/*的区别
- 题型:编写一段JS代码提取URL中的各个GET参数,并按Key_Value的形式返回到一个对象中(如:Json结构)
- [转载]spring MVC的困惑--url-pattern的/和/*有区别
- servlet里的url-pattern和filter的pattern的区别
- spring MVC的困惑 url-pattern的/和/*有区别
- spring MVC的困惑--url-pattern的/和/*有区别
- spring MVC url-pattern的/和/*有区别
- js中url传多个变量可以?
- js中url传多个变量可以?
- Servlet url-pattern /与/*区别
- js中url传多个变量可以?
- spring MVC的困惑--url-pattern的/和/*有区别
- js中url传多个变量可以?
- js中url传多个变量可以?
- 多个字符串的不同输出形式的区别 gets getchar getch
- 用java语言编写一个类,使该类包含一个方法f(),该方法具有可以输出同时带有大小写两种形式英文字母表的功能。