1.视图解析器(主要是MVC配置文件中配置)将controller返回的String类型信息到视图解析器组成一个完整的地址,进行请求转发
本质就是将InternalResourceViewResolver进行IOC布置到核心容器中,自己对该类的属性进行注入
<!--视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"></property>//前缀
<property name="suffix" value=".jsp"></property>//后缀
</bean>
2.类型转换解析器 SpringMVC中一般自带了一些类型转换,但有时候我们可以进行配置转换方法
注意 :要使用自定义转换器,那么开启mvc注解驱动时,需要定义conversion-service属性
- 首先需要自己定义一个实现类,实现Converter接口,重写转换方法,定义规则
- 然后在mvc配置文件中配置类型转换解析器
进行了ConversionServiceFactoryBean类的IOC,对converters数组类型属性进行赋值,自定义转换器是可以多个的
开启注解驱动:
<mvc:annotation-driven conversion-service="conversionServiceFactoryBean" ></mvc:annotation-driven>
类型转换器:
<bean class="org.springframework.context.support.ConversionServiceFactoryBean" id="conversionServiceFactoryBean">
<property name="converters">
<array>
<!--配置自定义转器-->
<bean class="com.ls.Converter.StringToDateConverter"></bean>
</array>
</property>
</bean>
3.文件上传解析器 当文件上传时需要(这个除了属性可以改变,id是写死的multipartResolver,使用其他的运行时会出错)
将CommonsMultipartResolver类IOC,并注入相应属性例如最大大小 最小大小这些
<!--文件上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--最大上传文件大小 bt 1024*1024 5M-->
<property name="maxUploadSize" value="5242880"></property>
</bean>
4.异常解析器
最为方便,自己定义异常类,只要实现HandlerExceptionResolver接口,重写resolveException方法定义异常规则,然后将此实现类部署到IOC就可以

5.mvc拦截器
1. 实现handlerInterceptor接口,重写方法(不自动提示,快捷键alt+insert选择)
2. 配置拦截器解析器 mvc:interceptors标签
* 实现handlerInterceptor接口 重写方法 不自动提示 是alt+insert选择重写 (一定要注意多个拦截器之间的拦截顺序)
* preHandle方法 在执行controller之前执行
* postHandle方法 在执行完成controller之后执行
* afterCompletion方法 在试图完成之后执行
* 返回值false带代表拦截 true就是放行 只有放行才能继续下一步
多个拦截器执行时:preHandler方法先后执行
postHandler方法,从后往前执行
afterCompletion方法,从后往前执行
配置文件:
<!--拦截器 多个自定义拦截器依次执行 但执行方法时顺序不一致-->
<mvc:interceptors>
<mvc:interceptor>
/*
-拦截路径
/*代表匹配一级 eg:/user
/**代表匹配多级 eg:/user/find
<mvc:mapping path="/**"/>
*/
<!--自定义拦截器配置ioc-->
<bean id="interceptor" class="com.ls.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
<mvc:interceptors>
执行顺序效果图: