springmvc学习笔记

springmvc框架

1.1 springmvc框架原理

  1. 发布请求到前端控制器(DispatcherServlet)
  2. 前端控制器请求HandlerMapping查找Handler,可以根据xml配置,注解进行查找
  3. 处理器映射器HandlerMapping向前端控制器返回Hander
  4. 前端控制器调用处理器适配器去执行Hander
  5. 处理器适配器去执行Hander
  6. Hander执行完成给适配器返回ModelAndView
  7. 处理器向前端控制器返回ModelAndView
  8. 前端控制器请求视图解析器去进行视图解析
  9. 视图解析器向前端控制器返回view
  10. 前端控制器进行视图渲染
  11. 前端控制器向用户响应结果

使用@RequestMapping映射请求

  • springMVC使用@RequestMapping注解为控制器指定可以处理哪些url请求
  • 在控制器的类定义和方法都可标注
  • @RequestMapping 的value、method、params及heads分别表示请求url、请求方法、请求参数及请求头的映射条件,他们之间是与的关系
  • params和headers支持简单的表达式

使用@RequestParam绑定请求参数值

在处理方案入参出使用@RequestParam可以把请求参数传递给请求方法

  • value:参数名
  • required:是否必须 默认为true

使用@RequestHeader绑定请求报头属性值

请求头包含了若干属性,服务器可据此获知客户端的信息,通过@RequestHeader即可将请求头中的属性绑定到处理方法的入参中

使用POJO对象绑定请求参数值

按照请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值,支持级联属性

使用ServletAPI作为入参

处理模型参数

ModelAndView

目标方法的返回值可以是ModelAndView类型,其中可以包含视图和模型信息,springMVC会把ModelAndView中的数据放到request域对象

1
2
3
4
5
6
7
8
9
@RequestMapping("/testModelAndView")
public ModelAndView testModelAndView(){
Date date=new Date();
String viewName="success";
ModelAndView modelAndView=new ModelAndView(viewName);
//添加模型数据到ModelAndView中
modelAndView.addObject("time",date);
return modelAndView;
}

Map及Model

目标方法的返回值可以是Map类型

1
2
3
4
5
@RequestMapping("/testMap")
public String testMap(Map<String,Object>map){
map.put("names", Arrays.asList("tom","jerry","Mike"));
return "success";
}

@SessionAttributes

  • 若希望在多个请求之间公用某个模型属性数据,则可以在控制器类上标注一个@SessionAttributes,springMVC将在模型中对应的属性暂存到HttpSession中
  • 除了可以通过属性名指定需要放在会话中的属性外(value属性值),还可以通过模型属性的对象类型(type属性值)指定哪些模型属性需要放在会话中
  • 该注解只能放在类的上面