SpringMVC

1、@RequestMapping映射请求

支持普通url,还支持?、*、**的字符和带{xxx}占位符的url,甚至支持使用请求方法、请求头参数及请求参数进行映射

2、请求处理方法的签名

@RequestParam(绑定请求参数值)、@CookieValue(绑定请求中的Cookie值)、@RequestHeader(绑定请求报文头中的属性值)、POJO绑定且支持级联属性

servlet api对象作为入参(HttpServletRequest、HttpServletResponse、HttpSession、WebRequest、NativeWebRequest、...)、IO对象作为入参

3、HttpMessageConverter

将请求信息转换为一个对象,将对象作为输出响应信息

@RequestBody   标注的入参将请求体信息转换到相应的类型,如(@RequestBody String requestBody)

@ResponseBody  标注的返回值信息

HttpEntity<T>不但可以对请求及响应报文体的数据,还可以访问请求和响应报文头的数据

ResponseEntity<T>

4、模型数据

处理方法返回类型ModelAndView,既包含视图信息,也包含模型数据

@ModelAttribute,入参标注该注解后,入参对象会放到数据模型中。@ModelAttribute(“user”)标注方法时,会将方法返回值添加到模型中

Map/Model/ModelMap为入参时,map中的数据会放到数据模型中

@SessionAttributes标注某个属性后,可以将属性暂存到session中

5、处理方法的数据绑定

(1)定义转换器,实现Converter<T1,T2>接口

(2)xml配置<mvc:annotation-driven conversion-service="conversionService-beanId" />,默认是FormattingConversionServiceFactoryBean

也可以通过@InitBinder注册自定义编辑器或者实现WebBindingInitializer接口在全局范围内使用自定义编辑器

POJO中属性标注@DateTimeFormat,@NumberFormat注解可以进行类型转换

6、数据绑定后的数据校验

对POJO对象的属性标注@Pattern @Length @Past等可以对标注@Valid注解的参数进行数据绑定后进行校验,如handle(@valid User user, BindingResult/Errors result),如果校验出错,可以通过result获取校验结果,且所有校验结果会保存到模型中且会通过HttpServletRequest暴露给视图对象,可通过spring的<form:errors path="propName"/>在JSP页面中显示错误信息。

7、视图解析器

一般可以配置一种或多种视图解析器,orderNo越小优先级越高。默认ContentNegotiatingViewResolver有最高优先级,而InternalResourceViewResolver有最低优先级。

ContentNegotiatingViewResolver一般用于使用同一url获取不同形式的返回内容。如xxx.html?content=xml,xxx.html?content=json

8、本地化

springMVC默认根据报文头的Accept-Language参数判断客户端的本地化类型,当然,我们可以通过Cookie、session等其他方式指定,也可以通过配置一个LocaleChangeIntercepter拦截器,xxx.com?locale=zh_CN表示中国大陆

9、上传文件

(1)添加Jakarta Commons FileUpload及Jakarta Commons io包

(2)配置CommonsMultipartResolver,其中属性defaultEncoding必须和JSP的pageEncoding属性一致,以便正确读取表单的内容。

(3)上传表单的的编码类型必须是enctype="multipart/form-data"

10、静态资源处理

<mvc:default-servlet-handler/>:首先由DispatcherServlet进行筛查,如果发现是静态资源,则转交由web应用默认的servlet处理,资源放在web容器的根路径下

<mvc:resources/>:由spring MVC框架自己处理静态资源,允许资源放在任何地方,可以设置缓存以节省带宽,发布新版本时可以通过在资源路径下加上版本号以使用新的资源

11、装配拦截器

12、异常处理

这里所说的异常包括处理器映射,数据绑定以及处理器执行出错,发生时调用resolveException方法,并转到ModelAndView对应的视图中。

(1)DefaultHandlerExceptionResolver

springMVC 默认装配,可以将异常转换为响应状态码,可以在web.xml中为响应状态码配置对应的页面。

(2)SimpleMappingExceptionResolver异常统一处理

可以指定exceptionMapping属性,为不同的异常类型映射为对应的视图名

(3)@ControllerAdvice

使一个controller类成为全局处理异常的类,类中用@ExceptipnHandler标注的方法可以处理所有异常。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值