【SpringMVC】| SpringMVC执行流程原理 | 常用注解 剥析

这篇具有很好参考价值的文章主要介绍了【SpringMVC】| SpringMVC执行流程原理 | 常用注解 剥析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 🦁 MVC模型

MVC全称Model View Controller,是一种设计创建Web应用程序的模式。这三个单词分别代表Web应用程序的三个部分:

  • Model(模型):指数据模型。用于存储数据以及处理用户请求的业务逻辑。在Web应用中,JavaBean对象,业务模型等都属于Model。

  • View(视图):用于展示模型中的数据的,一般为jsp或html文件。

  • Controller(控制器):是应用程序中处理用户交互的部分。接受视图提出的请求,将数据交给模型处理,并将处理后的结果交给视图显示

【SpringMVC】| SpringMVC执行流程原理 | 常用注解 剥析

二. 🦁 SpringMVC

SpringMVC是一个基于MVC模式的轻量级Web框架,是Spring框架的一个模块,和Spring可以直接整合使用。SpringMVC代替了

Servlet技术,它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。

1. SpringMVC执行流程(重点)

面试重点!!!

Ⅰ. SpringMVC四大组件

  • DispatcherServlet:前端控制器,接受所有请求,调用其他组件。

  • HandlerMapping:处理器映射器,根据配置找到方法的执行链。

  • HandlerAdapter:处理器适配器,根据方法类型找到对应的处理器。

  • ViewResolver:视图解析器,找到指定视图。

Ⅱ. 执行流程

【SpringMVC】| SpringMVC执行流程原理 | 常用注解 剥析

  1. 客户端将请求发送给前端控制器。

  2. 前端控制器将请求发送给处理器映射器,处理器映射器根据路径找到方法的执行链,返回给前端控制器。

  3. 前端控制器将方法的执行链发送给处理器适配器,处理器适配器根据方法类型找到对应的处理器。

  4. 处理器执行方法,将结果返回给前端控制器。

  5. 前端控制器将结果发送给视图解析器,视图解析器找到视图文件位置。

  6. 视图渲染数据并将结果显示到客户端。

2. @RequestMapping

作用:给控制器方法设置请求路径

位置:方法或类上方。用于类上,表示类中的所有控制器方法都是以该地址作为父路径。

属性:

  • value/path:请求路径
  • method:指定请求方式
  • params:规定必须发送的请求参数
  • headers:规定请求必须包含的请求头

3. @RequestParam

作用:在控制器方法中获取请求参数

位置:方法参数前

属性:

  • name:指定请求参数名称
  • defaultValue: 为参数设置默认值
  • required:设置是否是必须要传入的参数
/*
  定义请求的参数名为username,默认值为sxt,不是必须的参数
 */
@RequestMapping("/annotation2")
public String annotation2(@RequestParam(name = "username",defaultValue = "sxt",required = false) String name){
  System.out.println(name);
  return "baizhan";
}

请求URL的写法:http://localhost:8080/c3/annotation2?username=bz

4. @ReuqestHeader & @CookieValue

@RequestHeader

作用:在控制器方法中获取请求头数据

位置:方法参数前

@CookieValue

作用:在控制器方法中获取Cookie数据

位置:方法参数前

/*
    获取User-Agent请求头
    获取JSESSIONID的Cookie值
   */
@RequestMapping("/annotation3")
public String annotation3(@RequestHeader("User-Agent") String userAgent, @CookieValue("JSESSIONID") String jSessionId){
  System.out.println(userAgent);
  System.out.println(jSessionId);
  return "lion";
}

【SpringMVC】| SpringMVC执行流程原理 | 常用注解 剥析

5. RESTful风格支持

RESTful风格是一种URL路径的设计风格,而每个资源都会占据一个网络路径,无论对该资源进行增删改查,访问的路径是一致的。

Ⅰ. 传统 vs restful

传统:

查找id为1的学生:

http://localhost:8080/student/findById?id=30

删除id为1的学生:

http://localhost:8080/student/deleteById?id=30

RESTful风格URL:

查找id为30的学生:

http://localhost:8080/student/30

删除id为30的学生:

http://localhost:8080/student/30

  1. 那么如何区分对该资源是哪一种操作?

通过请求方式不同,判断进行的是什么操作。

RESTful风格的URL一共有四种请求方式:

  • GET请求:查询操作

  • POST请求:新增操作

  • DELETE请求:删除操作

  • PUT请求:修改操作

  1. 优点

结构清晰、符合标准、易于理解、扩展方便。

Ⅱ. @PathVariable

作用:在RESTful风格的URL中获取占位符的值

位置:方法参数前

属性:

value:获取哪个占位符的值作为参数值,如果占位符和参数名相同,可以省略该属性。

对比 deleteStudent 和 findStudentById。

@Controller
@RequestMapping("/student")
// 模拟学生的增删改查控制器
public class StudentController {
  // 路径中的{id}表示占位符,最后会封装到方法的参数中使用
  // 删除学生
  @RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
  public String deleteStudent(@PathVariable("id") int id){
    System.out.println("删除id为"+id+"的学生");
    return "lion";
   }
    
  // 如果占位符和参数名相同,可以省略@PathVariable的value属性
  // 根据id查询学生
  @RequestMapping(value = "/{id}",method = RequestMethod.GET)
  public String findStudentById(@PathVariable int id){
    System.out.println(id);
    System.out.println("根据id查询学生");
    return "lion";
   }

    // 新增学生
  @RequestMapping(value = "/{id}",method = RequestMethod.POST)
  public String addStudent(@PathVariable int id, Student student){
    System.out.println(id);
    System.out.println(student);
    System.out.println("新增学生");
    return "lion";
   }


  // 修改学生
  @RequestMapping(value = "/{id}",method = RequestMethod.PUT)
  public String updateStudent(@PathVariable int id, Student student){
    System.out.println(id);
    System.out.println(student);
    System.out.println("修改学生");
    return "lion";
   }
}

Ⅲ. @PostMapping @GetMapping

Ⅳ. @PutMapping @DeleteMapping

作用:简化设置请求方式的@RequestMapping写法

位置:方法上方。

@Controller
@RequestMapping("/student")
public class StudentController {
  // 删除学生
  @DeleteMapping("/{id}")
  public String deleteStudent(@PathVariable("id") int id){
    System.out.println("删除id为"+id+"的学生");
    return "baizhan";
   }


  // 根据id查询学生
  @GetMapping("/{id}")
  public String findStudentById(@PathVariable int id){
    System.out.println(id);
    System.out.println("根据id查询学生");
    return "baizhan";
   }


  // 新增学生
  @PostMapping("/{id}")
  public String addStudent(@PathVariable int id, Student student){
    System.out.println(id);
    System.out.println(student);
    System.out.println("新增学生");
    return "baizhan";
   }


  // 修改学生
  @PutMapping("/{id}")
  public String updateStudent(@PathVariable int id, Student student){
    System.out.println(id);
    System.out.println(student);
    System.out.println("修改学生");
    return "baizhan";
   }
}

6. @ResponseBody

作用:方法返回的对象转换为JSON格式并将JSON数据直接写入到输出流中,使用此注解后不会再经过视图解析器。使用该注解可

以处理Ajax请求。

位置:方法上方或方法返回值前

7. @RestController

如果一个控制器类下的所有控制器方法都返回JSON格式数据且不进行跳转可以使用@RestController代替@Controller,此时每个方

法上的@ResponseBody都可以省略。

8. @RequestBody

作用:将请求中JSON格式的参数转为JAVA对象

位置:写在方法参数前文章来源地址https://www.toymoban.com/news/detail-455684.html

@PostMapping("/addStudent2")
@ResponseBody
public Result addStudent2(@RequestBody Student student) {
    System.out.println(student);
    // 返回添加结果
    Result result = new Result(true, "添加学生成功!");
    return result;
}

到了这里,关于【SpringMVC】| SpringMVC执行流程原理 | 常用注解 剥析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SpringMVC】| SpringMVC执行流程(含源码分析)

    目录 SpringMVC执行流程 1. SpringMVC常用组件 2. DispatcherServlet初始化过程(源码分析) 3. DispatcherServlet调用组件处理请求 4. SpringMVC的完整执行流程 图书推荐:Spring Cloud Alibaba核心技术与实战案例 1.  SpringMVC常用组件 (1) DispatcherServlet: 前端控制器 ,不需要工程师开发,由框架

    2024年02月13日
    浏览(27)
  • SpringMVC 中的常用注解和用法

    观前提示:本篇博客演示使用的 IDEA 版本为2021.3.3版本,使用的是Java8(又名jdk1.8) 电脑使用的操作系统版本为 Windows 10 目录  前言 Spring Boot Spring MVC 1. MVC 1.1 MVC 和 Spring MVC 之间的关系 2. 创建 Spring MVC 项目 创建一个 SpringMVC 项目 1. new project 2. 选择 SpringBoot 项目, 选择合适的 jdk 版本

    2024年02月09日
    浏览(28)
  • SpringMVC常用注解、参数传递、返回值

    目录 前言 一、常用注解 二、参数传递 ​编辑 1. 基础类型+String类型 2. 复杂类型 3. @RequestParam 4. @PathVariable  5.@RequestBody 6. @RequestHeader  三、方法返回值 一:void 二:String 三:String+model  四:ModelAndView  四、页面跳转 在上一篇的博客中我们初步的了解学习SpringMVC基础知识,

    2024年02月09日
    浏览(26)
  • JavaEE——SpringMVC中的常用注解

    目录 1、@RestController (1)、@Controller (2)、@ResponseBody 2、RequestMappping (1)、定义 (2)、使用 【1】、修饰方法 【2】、修饰类 【3】、指定方法类型 【4】、简化版指定方法 (3)、获取参数 【1】、传递单个/多个参数 【2】、传递对象 3、@RequestParam 4、@RequestBody 5、@PathVar

    2024年02月15日
    浏览(35)
  • SpringMVC的执行流程

    过去的开发中,视图阶段(老旧JSP等) 1.首先用户发送请求到前端控制器DispatcherServlet(这是一个调度中心) 2.前端控制器DispatcherServlet收到请求后调用处理器映射器HandlerMapping 3.处理器映射器HandlerMapping找到具体的处理器,可查找xml配置或注解配置,生成处理器对象及处理器拦截器

    2024年02月19日
    浏览(25)
  • SpringMVC_执行流程

    DispatcherServlet :前端控制器,用于对请求和响应进行统一处理 HandlerMapping :处理器映射器,根据 url/method可以去找到具体的 Handler(Controller) Handler :具体处理器(程序员,以后开发这一部分需要) HandlerAdapter :处理器适配器,进行处理器方法的执行 ViewResolver :处理视图相关的

    2024年02月09日
    浏览(26)
  • SpringMVC 执行流程

    SpringMVC 框架 ​ SpringMVC 是一个基于 Java 的实现了 MVC 设计模式的请求驱动类型的轻量级 Web 框架,通过把 Model,View,Controller 分离,将 Web 层进行职责解耦,把复杂的 Web 应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。 简而言之,SpringMVC 就

    2024年03月25日
    浏览(100)
  • springMVC执行流程详解

    springMVC执行流程 主要由model层,view层和controller层组成。 1.1,jsp模型 主要是结构简单,开发这个小型项目的效率高,主要是由这个jsp和javaBean组成。但是jsp同时负责了controller层和view层,因此所有的代码都写在这个jsp里面,导致这个代码的重用性很低,维护不方便,因此这种

    2024年02月16日
    浏览(28)
  • 第12章:SpringMVC执行流程

    1.SpringMVC 常用组件 ①、DispatcherServlet: 前端控制器 ,框架提供。 作用:统一处理请求和响应,整个流程的控制中心,由它调用其他组件处理用户的请求 ②、HandlerMapping: 处理器映射器 ,框架提供 作用:根据请求的url、method等信息查找Handler即控制器方法 ③、Handler: 处理器,

    2024年02月08日
    浏览(32)
  • 【JavaEE进阶】SpringMVC中的常用注解和用法

    目录 学习Spring MVC 建立连接 @RequestMapping 注解介绍 @RequestMapping 使用 传参介绍 传递单个参数 传递多个参数 传递对象 后端参数重命名(后端参数映射)@RequestParam 非必传参数设置 传递数组 传递集合 传递JSON数据 获取URL中参数@PathVariable 上传文件@RequestPart 获取Cookie/Session 响应

    2024年04月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包