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配置

相关推荐
.Hypocritical.20 分钟前
MyBatis-Plus笔记
mybatis·mybatisplus
深盾科技_Virbox32 分钟前
加密狗授权能力选型:从授权模型到全生命周期管理
java·网络·数据库
. . . . .1 小时前
Egg框架深入
java·开发语言
RainCity1 小时前
Java Swing 自定义组件库分享(十三)
java·笔记·后端
livemetee2 小时前
【关于Spring声明式事务】
java·后端·spring
倒流时光三十年2 小时前
Java 内存模型(JMM)通俗解释
java·开发语言
码兄科技2 小时前
Java AI智能体开发实战:从零构建企业级智能应用指南
java·开发语言·人工智能
2401_859506243 小时前
AIGC赋能大漆摆件设计:从痛点分析到技术架构与实战验证
java·大数据·人工智能
剑挑星河月3 小时前
54.螺旋矩阵
java·算法·leetcode·矩阵
summer_west_fish3 小时前
K8s下Java服务OOM排查指南
jvm