SpringMVC

来源:互联网 发布:那种牌子的网络电视好 编辑:程序博客网 时间:2024/06/05 09:04

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标注的方法可以处理所有异常。



0 0
原创粉丝点击