SpringMVC配置

SpringMVC

使用配置类替换web.xml

AbstractDispatcherServletInitializer是springMVC提供快速初始化web3.0容器的抽象类

  • createServletApplicationContext
    • 加载SpringMVC环境
    • 加载SpringMVC对象的Bean放入webApplication对象范围中
  • getservletMappings
    • 设置SpringMVC对应的请求映射路径
  • createRootApplicationContext
    • 加载非SpringMVC对应的bean,加载spring环境

工作流程解析

启动服务器初始化过程

  • 服务器启动执行ServletContainersInitconfig类,初始化web容器
  • createServletApplicationContext
    • 创建webApplication对象,加载SpringMVC的配置类
  • 加载SpringMVc配置类,执行@ComponentScan加载对应的bean
  • 加载@Controller,建立@RequestMapping路径与方法的对应关系

单次请求过程

  • 发送请求
  • web容器判断请求是否满足SpringMVC拦截规则
  • 解析请求路径并匹配对应的方法
  • 执行方法进行处理并返回

bean加载控制

  • 加载
    • SPringMVC控制表现层相关的bean
    • spring控制数据层与逻辑层的bean
  • 方式
    • 修改spring设置精准扫描
    • 设置过滤器
      • excludeFilters
        • 排除指定路径
      • includeFilters

请求与响应

设置请求映射路径

  • @RequestMapping在类上方设置+在方法名上方设置=类上路径+方法上的路径

请求参数

  • GET发送参数
    • 参数在路径中,直接在方法参数中接受
    • 中文乱码,在tomcat中配置uriEncoding为UTF-8
  • POST发送参数
    • 直接使用方法参数进行接收
    • 中文乱码,在ServletContainersInitConfig类中覆写getServletFilers方法,添加characterEncondingFilter
  • 五种类型参数传递‘
    • 普通参数
      • 使用方法参数进行接收,参数名称不一致添加@RequestParam注解
    • POJO数据类型
      • 使用POJO类对象接收,请求参数必须跟pojo类中属性名称一致
    • 嵌套POJO数据类型
      • 请求参数名与形参名对应即可
    • 数组类型
      • 同名请求参数可以直接存放到对应名称的数组对象中
    • 集合类型
      • 使用@Requestparam注解可将请求参数存储到集合对象中,不使用该注解会报错
  • JSON数据传输
    • 使用方法
      • 在pom.xml中添加依赖,springMVC默认使用jackson处理json转换
      • 在springMVCconfig类上添加@EnableWebMvc:开启json数据类型自动转换
      • 在方法参数前添加@RequestBody,将外部json映射到形参集合对象中
    • 普通数组
      • @RequestBody List likes
    • 对象数据
      • @RequestBody User user
    • 对象数组
      • @RequestBody List list
    • @RequestBody 用于接收json数据,@Requestparam用于接收url数据
  • 日期类型参数传递
    • @DateTimeFormat
      • 形参注解
      • springMVC控制器方法形参前面
      • pattern指定日期时间格式字符串
  • springMVC类型转换,框架提供很多类型转换接口和实现类
    • Converter接口
      • string→Integer
      • string→Date
    • HttpMessageConverter接口
      • 实现对象与json之间的转换

响应

  • 响应页面
    • 直接返回页面的字符串
    • 类上方不能添加@ResponseBody
  • 返回文本数据
    • 类上方添加@ResponseBody
    • 直接返回字符串
  • 响应JSON数据
    • 类上方添加@ResponseBody
    • 返回对象会将其转换成json响应给前端

REST风格

  • 隐藏资源访问行为,无法通过地址得知操作,书写简化
  • 使用@RestController替换@Controller + ReponseBody
  • @GetMapping @PostMapping @PutMapping @DeleteMapping
    • @RequestMapping+@GetMapping=类上方路径+方法上路径
  • @PathVariable
    • 用于接收路径参数,使用{参数名称}描述路径参数,通常用于接收id值
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值