SpringMVC 中的异常处理
1自定义异常类继承Exception
2自定义异常处理器实现HandlerExceptionResolver
if(ex instanceof UserException) {
message=ex.getMessage();//区分是否是自定义异常
}else {
ex.printStackTrace();
message="说好的幸福呢";
}
3在配置文件中,交给容器管理
<bean id="userExceptionHandler" class="cn.ithehe.exception.UserExceptionHandler"></bean>
SpringMVC 中的拦截器
过滤器是 servlet 规范中的一部分, 任何 java web 工程都可以使用。
拦截器是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。
过滤器在 url-pattern 中配置了/*之后,可以对所有要访问的资源拦截。
拦截器它是只会拦截访问的控制器方法,如果访问的是 jsp, html,css,image 或者 js 是不会进行拦截的。
自定义拦截器的步骤
第一步:编写一个普通类实现 HandlerInterceptor 接口
public boolean preHandle
如何调用: * 按拦截器定义顺序调用 * 何时调用: * 只要配置了都会调用
有什么用: * 如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去
进行处理,则返回 true。如果程序员决定不需要再调用其他的组件去处理请求,则返回 false
public void postHandle
如何调用: * 按拦截器定义逆序调用 * 何时调用: * 在拦截器链内所有拦截器返回成功调用
在业务处理器处理完请求后,但是 DispatcherServlet 向客户端返回响应前被调用,
在该方法中对用户请求 request 进行处理。
public void afterCompletion
如何调用: * 按拦截器定义逆序调用 * 何时调用: * 只有 preHandle 返回 true 才调用
在 DispatcherServlet 完全处理完请求后被调用, * 可以在该方法中进行一些资源清理的操作。
第二步:配置拦截器
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>//拦截的路径
<mvc:exclude-mapping path=""/>//不拦截的路径
<bean id="handlerInterceptorDemo1" class="com.ithehe.web.interceptor.HandlerInterceptorDemo1"></bean>
</mvc:interceptor>
</mvc:interceptors>