springmvc入门
1.springmvc基本流程
当启动服务器时,因为配置了标签<load-on-startup></....>
所以会直接创建DispatcherServlet对象
紧接着加载springmvc的配置文件,配置文件的命名规则是:
[servlet名]-servlet.xml
请求到达SpringMVC的前端控制器DispatcherServlet进行注解扫描
根据配置@RequestMapping注解找到login请求所对应的具体执行方法
执行Controller中的逻辑
执行完,返回SpringMVC前端控制器,找配置的视图解析器
2.SpringMVC的基本配置
@Controller:标记在一个类上,使用它标记的类就是一个SpringMVC Controller对象,即处理器Handler。
@RequestMapping:指示spring用哪一个方法处理请求
value属性:用来映射一个请求,默认可省略
method属性:可以处理那些HTTP请求方式 比如post这类
consumes属性:指定处理请求时 提交 的内容类型
producess属性:指定返回的内容类型
params属性:指定请求时必须包含某个参数
header属性:指定请求时必须包含某个指定的header值
Model和ModelAndView:
对于SpringMVC,Controller执行业务逻辑,用于产生Model,而View用于渲染Model。SpringMVC提供了多种途径输出Model数据。
1.Model (底层会存到request域中)
@ModelAttribute(添加模型数据)先于@RequestMapping方法执行
addAttribute方法
2.ModelAndView:
Public ModelAndView login(ModelAndView mv) {
mv.addObject(“In”,”test”);
Mv.setViewName(“welcome”); }
@RequestParam:
value属性:用来映射一个请求,默认可省略
required属性:指定参数是否为绑定
defaultValue属性:如果没有传参则使用默认值
@RequestParam(name = "page", defaultValue = "1") Integer page
@PathVariable:标记用于获取请求URL中的动态参数
@GetMapping("/notification/{id}")
public String profile(HttpServletRequest request,
@PathVariable(name = "id") Long id) { ... }
将动态参数获取,一般会在其方法中,将获取到的参数用于业务逻辑编写
@RequestHeader
value属性:用来映射一个请求,默认可省略
required属性:指定参数是否为绑定
defaultValue属性:如果没有传参则使用默认值
@RequestBody:用于获取请求体内容。
value属性:用来映射一个请求,默认可省略
required属性:当取值为true时,get请求方式会报错。如果取值为false,get请求得到的是Null。
客户端提交post,带有参数username=xxx&password=123
然后@RequestBody(required=false) String ua
则 ua存的值是 username=xxx&password=123
@CookieValue:标记用于获取请求的Cookie参数
value属性:用来映射一个请求,默认可省略
required属性:指定参数是否为绑定
defaultValue属性:如果没有传参则使用默认值
@SessionAttributes:用于标记在一个类上,SpringMVC执行完控制器逻辑后,将数据模型中对应的属性名称保存到session对象中。
@ModelAttributes:
用法1(优先执行)
用法2(优先执行并返回赋值给参数)