SpringMVC

1.web层 - 代替Servlet(接收请求、处理请求、做出响应)

2.作用
  • 做出响应

    • 页面跳转 - 返回字符串 - 默认转发

      • forward:/xxx/xxx

      • redirect:/xxx/xxx

    • 页面跳转 - 返回ModelAndView

    • 页面跳转 - 使用ServletAPI

    • 响应数据 - 设置响应正文

      • response - 流

      • 返回字符串 + @ResponseBody

    • 响应数据 - 返回JSON

      • 返回方法必须是复杂类型

      • @ResponseBody @RestController(=@Controller + @ResponseBody)

  • 获取请求

    • 获取基本类型参数

      • 请求参数参数名和@Controller方法的参数名保持一致

      • @RequestParam

    • 获取对象类型参数:请求参数参数名和对象属性名保持一致

    • 获取JSON

      • JSON的key和对象属性名保持一致

      • 对象要使用@RequestBody

  • 统一异常处理

  • 参数校验

  • 拦截器 - 登陆验证

3.配置
  • lombok

  • spring web

4.注解

1) @Controller:放在类上,表示这是一个控制器类,实例化对象!

2) @RequestMapping("/test"):可以放在类和方法上,用来设置路径

  • 方法的路径:类的路径 + 方法的路径

    • 如果类没有路径,方法路径就是方法路径

    • 方法如果希望被外界访问,必须设置路径

  • 属性

    • value

      • 指定类或方法的地址,可以配置多个值

      • @RequestMapping如果没有指定属性,则()中的值就是value给的

    • mathod

      • 指定方法能够接收的请求方式

      • 不指定就表示任何请求都能接收

3) @ResponseBody :将方法返回的数据作为响应体进行响应 - 将方法返回的数据作为响应内容(JSON字符串返回前端)发送给浏览器而不是页面跳转

如果方法返回的是对象,将数据转换成JSON发送给浏览器

4)@RestController:= 1+3,放在类上,表示控制器类,且类中方法都是JSON

5)限制地址接收方式

  • @GetMapping:限制只接收get请求

  • @PostMapping:限制只接收post请求

6)@RequestBody:将请求中的JSON转换为Java对象

@RequestParam(name="???"):参数绑定

7)@DeleteMapping

5.MVC运行流程
6.组件简介
  • 前端控制器

  • 处理器映射器

  • 处理器适配器

  • 处理器Controller

  • 视图解析器

  • 试图

7.转发和重定向
  • 重定向

    java 复制代码
         return "redirect:/jsp/success.jsp";
  • 转发

    java 复制代码
     return "forward:/jsp/success.jsp";
8.视图解析器配置
java 复制代码
 # 前缀
 spring.mvc.view.prefix=/a/
 # 后缀
 spring.mvc.view.suffix=.html
9.获取请求
  • restful风格的API:url+请求方式

    • get 查询 /dept @GetMapping

    • post 新增 /dept @PostMapping

    • delete 删除 /dept @DeleteMapping

    • put 修改 /dept @PutMapping

  • 获取Servlet相关API:写参数上(?????)

10.统一异常处理

---- 自定义异常处理器并使用

  • 控制器内部异常处理 - 只能处理某个Controller自己的异常

  • 全局异常处理

11.发送ajax请求
  • 如果没有设置copntentType,contentType的默认值是ap

plication/x-www-fprm-urlencoded,这个时候ajax发送的不是JSON数据,而是模拟了form表单提交

  • 如果ajax请求要发送JSON,contentType要设置为"application /json'charest=utf-8",data中发送的数据要是JSON字符串
12.参数校验
  • 引入依赖:如果Springboot版本大于2.3.x,则需要手动引入依赖

    java 复制代码
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-validation</artifactId>
     </dependency>
  • 参数校验未通过的统一异常处理

  • RequestBody和form表单参数校验:给实体类加上@Validated注解

  • requestParamPathVariable参数校验:必须在Controller类上标注**@Validated**注解,并在参数上声明约束注解

  • 参数校验 - 特殊情况:实体类参数中有对象属性,如何校验对象中的属性 - 在该属性上加@Valid注解

  • 校验规则分组:?????????讲些啥??

13.热部署
  • 热:无需重启就能让修改后的功能生效

  • 配置:见教程

    • IDEA配置

    • SpringBoot配置

相关推荐
少许极端1 分钟前
算法奇妙屋(二十八)-递归、回溯与剪枝的综合问题 1
java·算法·深度优先·剪枝·回溯·递归
Boop_wu3 分钟前
简单介绍 JSON
java·开发语言
知识即是力量ol8 分钟前
初识 Kafka(一):分布式流平台的定义、核心优势与架构全景
java·分布式·kafka·消息队列
爱吃生蚝的于勒13 分钟前
【Linux】线程概念(一)
java·linux·运维·服务器·开发语言·数据结构·vim
kong790692814 分钟前
Nginx性能优化
java·nginx·性能优化
Pluchon15 分钟前
硅基计划4.0 算法 简单模拟实现位图&布隆过滤器
java·大数据·开发语言·数据结构·算法·哈希算法
我命由我1234515 分钟前
Java 泛型 - Java 泛型通配符(上界通配符、下界通配符、无界通配符、PECS 原则)
java·开发语言·后端·java-ee·intellij-idea·idea·intellij idea
Seven9716 分钟前
AQS深度探索:以ReentrantLock看Java并发编程的高效实现
java
4311媒体网24 分钟前
C语言操作符全解析 C语言操作符详解
java·c语言·jvm
淡忘_cx25 分钟前
使用Jenkins自动化部署spring-java项目+宝塔重启项目命令(2.528.2版本)
java·自动化·jenkins