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.转发和重定向
  • 重定向

         return "redirect:/jsp/success.jsp";

  • 转发

     return "forward:/jsp/success.jsp";

8.视图解析器配置
 # 前缀
 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,则需要手动引入依赖

     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-validation</artifactId>
     </dependency>

  • 参数校验未通过的统一异常处理

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

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

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

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

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

  • 配置:见教程

    • IDEA配置

    • SpringBoot配置

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值