深入浅出spring boot 2.x 04-springMVC注解【笔记】

springMVC启动映射
  1. 启动时将@RequestMapping配置内容保存到处理器映射HandlerMapping中
  2. 通过拦截请求与HandlerMapping匹配,找到对应处理器
  3. 将处理器和拦截器保存到HandlerExecutionChain对象中,返回给DispatcherServlet
    这样DispatcherServlet就可以运行它们了
springMVC提供注解
  • @RequestParam 可以设置请求的参数名称,默认不能为空
    使用required=false设置参数值可为空
  • @PathVariable 获取url参数
  • @DateTimeFormat 日期格式化
  • @NumberFormat 数字格式化
  • springboot日期格式化也可以使用配置文件spring.MVC.data-Format=yyyy-MM-dd
自定义参数转换规则
  • 转换http请求体(body)会调用HttpMessageConverter接口方法对请求体的信息进行转换
    * 先调用canRead,判断可读后进行read,将json转换成java对象
springMVC通过WebDataBinder获取参数
  • 作用是解析http请求的上下文,在控制器调用之前转换参数并且提供验证功能,为调用控制器方法做准备
  • 处理器从http请求中读取数据,通过接口Converter,Formatter,GenericConverter进行各类参数转换
  • 使用DefaultFormattingConversionService管理转换类
springboot参数转换规则

自动配置类WebMvcAutoConfiguration的内部类WebMVCAutoConfigurationAdapter
Converter一对一转换器
GenericConverter集合和数组转换

数据验证

注解验证JSR-303(Java Specification Requests),在实体上增加如下
@NotNull
@Future,Past,将来,过去的日期
@DateTimeFormat日期格式化转换
@DecimalMin最小值,max最大值
@Range(min,max)限定范围
@Email邮箱验证
@Size字符串长度验证
controlller中使用(@Valid @RequestBody Pojo p,Errors error)验证

如果验证总价格=单价*数量,不能使用JSR-303,可以使用spring自带的验证机制,如下

  • 实现接口Validate,实现其两个方法,并在controller中使用@InitBinder将实现的接口绑定给WebDataBinder
springMVC数据模型
  • Model是spring数据模型接口
  • ModeAndView存在ModeMap属性
  • 视图解析器InternalResourceViewResolver
  • pdf视图,AbstractPdfView抽象类
文件上传

拦截器HandlerInterceptor,可实现其方法
springboot使用时实现WebMvcConfigurer接口的addInterceptors将其加入进去并添加拦截的请求正则即可

  • 多个拦截器的执行规则,责任链模式的规则
    preHandle(处理器执行前方法)先注册先执行
    postHandle(处理器处理后方法)先注册后执行
    afterCompletion(处理器完成后方法)先注册后执行
重定向传递对象

传递RedirectAttributes ra.addFlashAttribute(“User”,User);
获取直接使用User即可。原理,将对象存储到咯session中,获取后再删除
获取请求头的参数,@RequestHeader

猜你喜欢

转载自blog.csdn.net/i6725545/article/details/87861273