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

相关推荐
doglc10 分钟前
从零手写RPC-version0
java·git·rpc·maven·intellij idea
捡田螺的小男孩19 分钟前
10万QPS高并发请求,如何防止重复下单
java·后端·面试
m0_7269659832 分钟前
Java Bean演进历程:从POJO到Spring Boot配置绑定
java·开发语言·spring boot
SnXJi_35 分钟前
纷析云开源财务软件:助力企业财务管理数字化转型
java·gitee·开源·开源软件·gitcode
八股文领域大手子41 分钟前
深入浅出 Redis:核心数据结构解析与应用场景Redis 数据结构
java·数据结构·数据库·人工智能·spring boot·redis·后端
尽兴-1 小时前
常用 Git 命令详解
java·git·vscode·gitee
Thomas_YXQ1 小时前
Unity3D 测试驱动开发(TDD)框架设计
java·开发语言·驱动开发·全文检索·unity3d·lucene·tdd
王有品1 小时前
Spring MVC 模型数据绑定:addAttribute 与 put 方法详解
java·spring·mvc
ChengZUOZZZ1 小时前
蓝桥杯题目:二维前缀和
java·算法·蓝桥杯