servlet与springmvc的url设置方式及映射规则

  • servlet容器对url的匹配过程

  1. 精确路径匹配
  2. 最长路径匹配。例子:servletA的url-pattern为/test/,而servletB的url-pattern为/test/a/,此 时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。
  3. 扩展匹配,如*.action
  4. 如果前面没有找到对应的路径,如果应用定义了一个default servlet,则容器会将请求丢给default servlet
  • filter对url的匹配过程

对于filter,不会像servlet那样只匹配一个servlet,因为filter的集合是一个链,所以只会有处理的顺序不同,而不会出现只选择一 个filter。Filter的处理顺序和filter-mapping在web.xml中定义的顺序相同。

  • web.xml url-pattern详解

在web.xml文件中,以下语法用于定义映射:

  1. 以”/’开头和以”/*”结尾的是用来做路径映射的。
  2. 以前缀”*.”开头的是用来做扩展映射的。
  3. “/” 是用来定义default servlet映射的。
  4. 剩下的都是用来定义详细映射的。比如: /aa/bb/cc.action

所以,为什么定义”/*.action”这样一个看起来很正常的匹配会错?因为这个匹配即属于路径映射,也属于扩展映射,导致容器无法判断。

  • Spring MVC中的路径匹配

Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache Ant的样式路径,Apache Ant样式的路径有三种通配符匹配方法,这些可以组合出很多种灵活的路径模式
|Wildcard | Description |
| ? | 匹配任何单字符|
| * | 匹配0或者任意数量的字符 |
| ** | 匹配0或者更多的目录 |

Path Description

/app/*.x    匹配(Matches)所有在app路径下的.x文件
/app/p?ttern    匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern
/**/example    匹配(Matches) /app/example, /app/foo/example
/app/**/dir/file.    匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java
/**/*.jsp    匹配(Matches)任何的.jsp 文件

原文参考:
https://blog.csdn.net/qiaqia609/article/details/48825711
https://blog.csdn.net/qq_26878363/article/details/81635139

原文地址:https://www.cnblogs.com/zlt666/p/10579134.html

时间: 2024-08-14 17:08:08

servlet与springmvc的url设置方式及映射规则的相关文章

文件上传(Servlet/Struts2/SpringMVC)

文件上传 Servlet实现 要实现文件上传的功能,必须在form的表单中的添加 enctype="multipart/form-data" 表示以二进制流的方式将文件传给控制器. 需要导入的jar包有:commons-fileupload-1.2.1.jar.commons-io-1.4.jar 文件上传的步骤: (1)创建DiskFileItemFactory的对象. (2)创建ServletFileUpload的对象,需传入DiskFileItemFactory的对象.可以获得封

对于SpringMVC请求路径的方式

初次接触SpringMVC的时候 对于请求路径是使用基于注解的配置 @RequestMapping("/self") 这种方式配置方便 更适合RESTful风格一起使用 @RequestMapping(value="/self/{name}",method.RequestMethod=GET) 然后又由于需要接触到基于XML配置的请求路径 如下: <prop key="/login.do">usersController</pr

jQuery Ajax url使用方式

jQuery Ajax的使用场景: 页面需要通过后台逻辑,但只需要局部刷新以显示新的内容. jQuery Ajax url使用方式1.servlet方式: 需要在struts.xml中写一个action,跳转地址写servlet; 需要重写init方法(为了使用spring注入的bean); 设置响应编码response.setContentType("text/html; charset=UTF-8"); 使用request.getParameter()接收参数; 使用respons

springMvc的注解注入方式

springMvc的注解注入方式 最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着学习的态度来阅读源码,若文章在表述和代码方面如有不妥之处,欢迎批评指正.留下你的脚印,欢迎评论!希望能互相学习. 1,首先定义三个常用的注解Service,Autowired,Contrller:(主要的解释都在代码中有,在这里就不多陈述) Service: package com.lishun.A

ThinkPHP第二课 框架MVC目录和URL访问方式

第二课 框架MVC目录和URL访问方式 1.说明: ThinkPHP是基于MVC的框架,认识框架目录将更好的实现分层,掌握ThinkPHP.URL访问就是访问框架的控制器(MVC中的C),共有四种方式,框架中的C起到分模块的作用. url的4种访问方式: 1.PATHINFO 模式 -- 重点!!!!!! http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2 2.普通模式 http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

SpringMVC(三)URL请求到Action的映射规则

在SpringMVC(二)经典的HelloWorld实现我们展示了一个简单的get请求,并返回了一个简单的helloworld页面.本篇我们来学习如何来配置一个action的url映射规则. 在SpringMVC(二)经典的HelloWorld实现我们在HelloWorldController上配置了一个@RequestMapping(value = "/helloworld")这表示对该controller的所有action请求必须是以"/helloworld"开

CSS四种设置方式

上面这张思维导图已经大概的讲明白了四种设置方式的不同点,下面就细入说明一下各自的用法和注意点. 1.嵌入样式表 <html> <head> <title>CSS四种设置方式</title> </head> <body> <p style="color:red;font-size:2cm;background-color:gray; border:2px solid blue">内联样式表</p&g

spring+springmvc+ibatis整合注解方式实例

需求说明 实现用户通过数据库验证登录需求,采用 Myeclipse+Tomcat 6.0+Mysql 5.0+JDK 1.6 2.数据库表 开发所用是Mysql数据库,只建立单张用户表T_USER,表结构如下: 字段名称 数据类型 字段描述 ID int 用户编号 USERNAME VARCHAR 用户名 PASSWORD VARCHAR 用户登录密码 sql语句如下: CREATE TABLE `t_user` ( `ID` int(11) NOT NULL auto_increment, `

CSS的语法和设置方式

CSS语法 格式 属性:值:属性: 值1:属性1......: 属性和值使用冒号":" 单位 颜色:#rgb   #8fa   #aaffaa   red   green 大小:em   2em  px   pt   %  pc  cm   mm  in URL(url) 注释/* --*/在其中不要在包含注释 CSS的四种设置方式 内联样式表:在HTML元素标签中使用style属性内联(每个HTML标签都可以加样式) 嵌入样式表:通过HTML的<style>标签蒋CSS嵌