首页 > 其他分享 >Spring—Spring MVC 全解析

Spring—Spring MVC 全解析

时间:2023-02-07 10:33:55浏览次数:40  
标签:控制器 解析 请求 Spring 视图 MVC 处理器 注解 DispatcherServlet

处理流程

Spring—Spring MVC 全解析_jar

SpringMVC 处理流程.PNG

  1. 用户发送请求至前端控制器 DispatcherServlet;
  2. DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器;
  3. 处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet;
  4. DispatcherServlet 调用 HandlerAdapter 处理器适配器;
  5. HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器);
  6. Controller 执行完成返回 ModelAndView;
  7. HandlerAdapter 将 Controller 执行结果 ModelAndView 返回给 DispatcherServlet;
  8. DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器;
  9. ViewReslover 解析后返回具体 View;
  10. DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中);
  11. 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 中添加:


<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<!-- 设置编码格式 -->
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

文件上传

  1. 引入jar包: commons-io-1.3.2.jar 和 commons-fileupload-1.2.1.jar;
  2. 配置xml:


<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
  1. 控制器兼容:
@RequestMapping("/upload")
public void upload(@RequestParam("file") MultipartFile file) throws Exception {
System.out.println(file.getOriginalFilename());
}

标签:控制器,解析,请求,Spring,视图,MVC,处理器,注解,DispatcherServlet
From: https://blog.51cto.com/u_13146445/6041399

相关文章

  • spring项目slf4j使用
    idea安装lombok pom新增包<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><opt......
  • 主打综合实力的静态代码试工具Klocwork 2022.4 版更新解析
    Klocwork2022.4中的新增功能 对于2022年的最终版本,Klocwork2022.4提供了针对C、C++、C#、Java的更新和改进,并增强了对Android13的支持。此外,此版本还包括对......
  • 基于SpringBoot的WebSocket开发(非完整代码)
    1、添加依赖<!--websocket--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starte......
  • SpringBoot中@Autowired报红原理及解决方案
    service层将mapper注入进来时,@Autowired下的mapper接口会报红,如图:报红原因:@Autowired是Spring注解,报红提示找不到bean,因为没有显示地将managerMapper注入到Spring容器中......
  • 基于Springboot+Mybatis+mysql+vue宠物到家管理平台
    @目录一、系统介绍二、功能展示1.主页(普通用户)2.登陆、注册(普通用户)3.宠物大全(普通用户)4.宠物详情(申请领养、点赞、评论)(普通用户)5.我的送养(普通用户)6.我的领养(普通用户......
  • Spring Cloud Feign
    Feign的作用和定位,与Ribbon的关系Feign是一个声明式的HTTP客户端,提供了简化HTTP客户端调用的功能。它使用注解和接口来定义和发送请求,可以简化很多客户端代码。Feign......
  • Spring再次复习之相关笔记
    实例化建BeanDefinition读取器:AnnotatedBeanDefinitionReader:其主要做了2件事情1.注册内置BeanPostProcessor2注册相关的BeanDefinition.Spring涉及的设计模式......
  • 【原创】淘宝关键词搜索爬取与解析
    本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!淘宝......
  • springboot3 security 从始至终--01初体验
    本文带领读者体验springbootsecurity的魅力:借助自动配置能力只需要简单几步就能将接口纳入权限管控。第一步创建项目如上图,为了更好地演示配置过程,创建一个空项目。......
  • springboot + maven多环境配置
    1.多环境配置文件针对开发、测试、生产三个环境使用不同的开发配置application.ymlserver:port:6666spring:profiles:##获取pom文件中被激活的profile......