
Spring MVC结构图

Spring MVC流程图
几个关键概念
- DispatcherServlet:中央调度器
- HandlerMapping:处理器映射器 • Handler:处理器
- HandlerExecutionChain:执行链
- HandlerAdapter:处理器适配器 • ModelAndView对象
- ViewResolver:视图解析器
常用注解命令
@Contoller / @RestController
@RestController结合@Contoller和@ResponseBody,返回json数据
@RequestMapping
响应Get和Post请求
@GetMapping / @PostMapping
响应特定方法请求
@PutMapping / @DeleteMapping
修改和删除
@RequestBody / @ResponseBody / @ResponseStatus
@RequestBody请求信息,@ResponseBody表示返回json数据,@ResponseStatus表示返回状态码
映射方法入参的三种方式
@PathVariable
//src/main/java/com/company/myproject/controller/UserController.java
@GetMapping("/list/{username}")
public String getAllUser(@PathVariable String username, Model model){
model.addAttribute("username",username);
return "user-list";
//注意名字和模版文件名一致
}
新建templates目录
src/main/resources/templates/user-list.html
<!-- html标签中添加xmlns:th="http://www.thymeleaf.org" -->
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p th:text="hello,"+{username}></p>
</body>
</html>
@RequestParam
@GetMapping("/list")
public String getAllUser(@RequestParam("username") String username){
model.addAttribute("username",username);
return "user-list";
//user-list和模版文件名一致
}
POJO对象绑定请求参数
@GetMapping("/list")
public String getAllUser(User user){
model.addAttribute("username",username);
return "user-list";
//user-list和模版文件名一致
}
处理模型数据
ModelAndView
@RequestMapping("/list")
public ModelAndView getAllUser(@RequestParam("username")String username){
ModelAndView mv = new ModelAndView();
mv.setViewName("user");
mv.addObject("username",username);
return mv;
}
Map和Model
@GetMapping("/list/{username}")
public String getAllUser(@PathVariable String username, Model model){
model.addAttribute("username",username);
return "user-list";
}
@SessionAttributes
用于在多个请求之间共用数据,Spring MVC将存放在model中对应的数据暂存到HttpSession 中,它只能使用在类定义上。
@SessionAttributes(value={"user"})
@Controller
public class UserController {
@RequestMapping("/test")
public String test(Model model){
User user = new User("alice",12);
model.addAttribute("user", user);
return "user-info";
}
}
@SessionAttributes(value={“user”})将model中属性名为user的数据存入session域中
在页面中使用${requestScope.属性名}
<div>user :${requestScope.user}</div>