SpringMVC扩展
一、拦截器
1、拦截器的配置
<mvc:interceptors>
<ref bean="firstInterceptor" />
<!--bean和ref标签所配置的拦截器默认对DispatcherServlet处理的所有的请求进行拦截-->
<!--第一种-->
<!--<bean class="com.mvc.interceptor.FirstInterceptor"/>-->
<!--第二种-->
<!--<ref bean="firstInterceptor" />-->
<!--第三种-->
<!--<mvc:interceptor>
<!–配置需要拦截的请求的请求路径,/**表示所有请求,/*表示一层路径的请求–>
<mvc:mapping path="/*"/>
<!–配置不需要拦截的请求的请求路径–>
<mvc:exclude-mapping path="/abc/"/>
<!–配置拦截器–>
<ref bean="firstInterceptor"/>
</mvc:interceptor>-->
</mvc:interceptors>
2、拦截器的三个抽象方法
拦截器的三个方法:
preHandle():在控制器方法执行之前执行,其返回值表示对控制器方法的拦截(false )或放行(true)
postHandle():在控制器方法执行之后执行
afterCompletion():在控制器方法执行之后,且渲染视图完毕之后执行
3、多个拦截器的执行顺序
①若每个拦截器的preHandle()都返回true
此时多个拦截器的执行顺序和拦截器在SpringMVC的配置文件的配置顺序有关:
preHandle()会按照配置的顺序执行,而postHandle()和afterCompletion()会按照配置的反序执行
②若某个拦截器的preHandle()返回了false
preHandle()返回false和它之前的拦截器的preHandle()都会执行,postHandle()都不执行,返回false的拦截器之前的拦截器的afterCompletion()会执行
二、异常处理器
1、基于配置的异常处理
SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver
HandlerExceptionResolver接口的实现类有:DefaultHandlerExceptionResolver和
SimpleMappingExceptionResolver
SpringMVC提供了自定义的异常处理器SimpleMappingExceptionResolver,使用方式:
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!–key设置要处理的异常,value设置出现该异常时要跳转的页面所对应的逻辑视图–>
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<!–设置共享在请求域中的异常信息的属性名–>
<property name="exceptionAttribute" value="ex"></property>
</bean>
2、基于注解的异常处理
/@ControllerAdvice将当前类标识为异常处理的组件
@ControllerAdvice
public class ExceptionController {
//@ExceptionHandler用于设置所标识方法处理的异常
@ExceptionHandler(ArithmeticException.class)
public String handleException