SpringMVC是spring框架内置的MVC实现,是spring用于解决前端代码和后台代码分离的一个子框架
基于xml的配置流程
1、在web.xml中配置核心控制器,拦截所有请求
核心控制器需要启动spring容器,所以必须加载配置文件,spring配置文件默认放在WEB-INF下,名为{servlet-name}-servlet.xml,{servlet-name}指的是,核心控制器配置的名字。因此如果spring配置文件不在默认位置,或者配置文件名不符的情况下,必须为核心控制器指定spring配置文件
2、配置映射路径,指定请求与方法之间的关系
每一个方法在配置文件中配置一个<bean>,name属性对应请求,class对应类名,要求方法名必须和请求名一致。
基于注解的springMVC配置
1、在web.xml中配置核心控制器,拦截所有请求
配置文件位置和文件名不符合默认规则的话必须为核心控制器指定配置文件
2、映射路径的配置
在方法上面使用@RequestMapping注解为方法指定请求路径
注意:方法名必须和请求路径一致。
映射路径@RequestMapping的使用说明
映射路径其实就是匹配请求路径和执行方法的路径
注意:基于注解的映射路径可以省略前后缀(基于配置文件的方式基本没人使用)
映射路径支持通配符:
映射路径优先级别:
从小到大
带路径变量映射路径配置
请求:${pageContext.request.contextPath }/zhangsan/say2.mvc"
配置:@RequestMapping(value="{name}/say2")
此时在方法的参数必须标注请求路径参数
@pathVariable String name
路径变量的作用:
1、实现伪静态
2、基于Restful风格需要,在和移动端进行数据传输时不能带有?
Spring两种限制:
方法限制、参数限制
方法限制:限制访问必须是以指定的提交方式的请求才能执行指定方法,否则报异常。
参数限制:
命名空间:
当@RequestMapping放在类上时,此时的作用是作为命名空间,可以解决映射路径冲突问题。
数据绑定:
SpringMVC里面,所谓的数据绑定就是将请求带过来的数据绑定到执行方法的参数变量。
内置对象的绑定:
1.HttpServletRequest
2.HttpServletResponse
3.HttpSession
4.Model
5.ModelMap
Model和ModelMap默认都是存储了Request请求作用域的数据的对象
数据自动绑定:
SpringMVC框架支持不需要任何数据绑定的注解直接将表单参数绑定到我们的执行方法的参数上。
要求参数名必须和请求中的name属性一致。
将数据自动绑定到Javabean中
要求;javabean中的属性名必须和请求参数中name属性值一致
自动绑定到数组:
集合的自动封装
SpringMVC的执行方法的参数不支持集合数据直接自动绑定的。需要将集合转换成一个JavaBean的类型.把集合作为JavaBean的一个属性来实现.
数据的强制绑定:
SpringMVC有一些数据是不能自动绑定,需要我们使用它提供的注解强制绑定.
遇到需要强制绑定的几种情况
1. 默认参数自动绑定的是表单数据,如果数据不是来自表单,那么必须需要强制绑定
2. 数据是来自表单的,但是参数名不匹配,那么也需要强制绑定
3. 数据是来自表单的,但是需要将数据绑定在Map对象里面,需要强制绑定
@PathVariable:绑定路径参数
@CookieValue获得Cookie的值
@RequestParam绑定表单数据
2、将表单数据绑定到Map中