SpringMVC

本文详细介绍了SpringMVC框架的定义、工作原理,包括MVC模式的组件划分,以及关键注解如@RequestMapping、@GetMapping、@PostMapping和@ResponseBody的用法。还涵盖了文件上传、拦截器的概念和使用方法。
摘要由CSDN通过智能技术生成

目录

SpringMVC定义

MVC定义

SpringMVC工作原理

MVC的工作流程

@RequestMapping 注解

指定请求的HTTP方法:GET/POST

@GetMapping 和 @PostMapping

@ResponseBody / @RestController

文件上传

文件上传客户端三要素

拦截器

拦截器的作用

拦截器基本概念

拦截器方法说明


SpringMVC定义

Spring MVC(Model-View-Controller)是Spring框架的一部分,是基于Servlet API构建的Web原始框架。用于开发基于Java的Web应用程序。它采用MVC设计模式,将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。

MVC定义

模型(Model): 表示应用程序中的数据和业务逻辑。在Spring MVC中,通常使用POJO(Plain Old Java Object)作为模型对象。通常模型对象负责在数据库中存取数据。
视图(View): 负责展示用户界面,通常是HTML页面、JSON响应或其他类型的视觉呈现。视图负责将模型数据渲染,并向用户呈现。
控制器(Controller): 接收并处理HTTP请求,并根据请求的内容选择相应的处理方法。控制器负责调度适当的业务逻辑,操作模型数据,并通过相应的视图返回响应结果。

SpringMVC工作原理

  1. 客户端发送请求至前端控制器DispatcherServlet。
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器根据请求的URL找到对应的处理器(Controller)。
  3. Controller调用业务逻辑后,将ModelAndView对象(封装视图和模型信息)返回给DispatcherServlet  
  4. DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
  5. ViewReslover视图解析器解析后返回具体的View给DispatcherServlet
  6. DispatcherServlet根据View和Model渲染视图响应给客户端

MVC的工作流程

用户通过视图层 发送请求到 服务器 ,在服务器中 请求被 Controller 接受,Controller 则调用响应的model层来处理请求,处理完之后的结果 返回给Controller,然后 controller 把结果响应给View 视图,渲染数据 最终展示在浏览器

@RequestMapping 注解

@RequestMapping是SpringWeb应用程序中最常被用到的注解之一,它是用来注册路由映射的。

@RequestMapp即可修饰类,也可同时修饰方法,当修饰类和方法时,访问的地址就是 “类的路由+方法的路由”。

指定请求的HTTP方法:GET/POST

可以通过method属性来指定具体的HTTP方法,例如GET、POST等。上述代码指定了只有当使用GET方法访问路径为"/hello"时,hello()方法才会被执行。【可以使用postman操作get请求】

@GetMapping 和 @PostMapping

@GetMapping和@PostMapping是Spring Framework中的注解,用于定义HTTP请求的处理方法的映射。

@GetMapping注解表示该方法用于处理HTTP GET请求。

@PostMapping注解表示该方法用于处理HTTP POST请求。

@ResponseBody / @RestController

@ResponseBody 返回的值如果是字符会转换成 text/html,如果返回的是对象会转换成application/json 返回给前端。
@ResponseBody 可以⽤来修饰⽅法或者是修饰类,修饰类表示类中的所有⽅法都会返回 html 或者json,⽽不是视图。
@RestController = @Controller + @ResponseBody

具体来说,当一个控制器方法被@ResponseBody注解标记时,Spring会将方法的返回值序列化成HTTP响应的内容,并直接发送给客户端。框架会根据请求的Content-Type和适用的消息转换器将返回值转换为相应的格式,如JSON、XML等。

文件上传

文件上传客户端三要素

  • 表单项type="file"

  • 表单的提交方式是post

  • 表单的enctype属性是多部分表单形式,及enctype= “multipart/form-data"

服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数:

  • 基本类型参数

  • POJO类型参数

  • 数组类型参数

  • 集合类型参数

拦截器

拦截器的作用

Spring MVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。

将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。

拦截器基本概念

Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。

要使用Spring MVC中的拦截器,就需要对拦截器类进行定义和配置。通常拦截器类可以通过两种方式来定义。

  1. 通过实现HandlerInterceptor接口
  2. 继承HandlerInterceptor接口的实现类(如:HandlerInterceptorAdapter)来定义。

拦截器方法说明

preHandle:方法将在请求处理之前进行调用,该方法的返回值是布尔值Boolean类型的,当它返回为false时,表示请求结束,后续的Interceptor和Controller都不会再执行;当返回值为true时就会继续调用下一个Interceptor的preHandle方法

postHandle:该方法是在当前请求进行处理之后被调用,前提是preHandle方法的返回值为true时才能被调用,且它会在DispatcherServlet进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller处理之后的ModelAndView对象进行操作

afterCompletion:该方法将在整个请求结束之后,也就是在DispatcherServlet渲染了对应的视图之后执行,前提是preHandle方法的返回值为true时才能被调用

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值