全球短讯!Spring—Spring MVC 全解析

2023-02-07 11:13:53 来源:51CTO博客


(资料图)

处理流程

SpringMVC 处理流程.PNG

用户发送请求至前端控制器 DispatcherServlet;DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器;处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet;DispatcherServlet 调用 HandlerAdapter 处理器适配器;HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器);Controller 执行完成返回 ModelAndView;HandlerAdapter 将 Controller 执行结果 ModelAndView 返回给 DispatcherServlet;DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器;ViewReslover 解析后返回具体 View;DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中);DispatcherServlet 响应用户。

常用注解

基本注解

@RequestMapping:给控制器方法绑定一个 uri;@ResponseBody:将 Java 对象转成 json,并且发送给客户端;@RequestBody:将客户端请求过来的 json 转成 Java 对象;@RequestParam:当表单参数和方法形参名字不一致时,做一个名字映射;@PathVarible:用于获取 uri 中的参数,比如 user/1 中 1 的值。

Rest风格的新api

@RestController:相当于 @Controlle r+ @ResponseBody;@GetMapping:还包括 @DeleteMapping、@PostMapping、@PutMapping 等相当于 @RequestMapping 加对应的 http 请求方法;

其他注解

@SessionAttribute:声明将什么模型数据存入session;@CookieValue:获取 cookie 值;@ModelAttribute:将方法返回值存入 model 中;@HeaderValue:获取请求头中的值。

使用技巧

中文乱码

通过配置 Spring MVC 字符编码过滤器来解决Post 请求中文乱码的问题,在 web.xml 中添加:

    CharacterEncodingFilter    org.springframework.web.filter.CharacterEncodingFilter            encoding                utf-8        CharacterEncodingFilter    /*

文件上传

引入jar包: commons-io-1.3.2.jar 和 commons-fileupload-1.2.1.jar;配置xml:
控制器兼容:
@RequestMapping("/upload")public void upload(@RequestParam("file") MultipartFile file) throws Exception {    System.out.println(file.getOriginalFilename());}

标签: 文件上传 编码格式 请求方法

上一篇:
下一篇: