Spring MVC基础

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>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容