SpringMVC经典系列-14自定义SpringMVC的拦截器---【LinusZhu】
来源:互联网 发布:ubuntu sysv rc conf 编辑:程序博客网 时间:2024/04/30 12:52
注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linuszhu@163.com,敬请朋友们斧正,谢谢。
这部分主要讲解SpringMVC的拦截器的部分,会带着大家完成定义拦截器的两种方式的实例,不多说了,开始……
SpringMVC的拦截器主要是用于拦截用户的请求,并且进行相应的处理,如:权限验证、判断登录等。
定义拦截器的两种方式,如下:
1. 实现接口:
org.springframework.web.servlet.HandlerInterceptor
接口中有如下方法需要重写:
注意:参数中的Object handler是下一个拦截器。
a) public boolean preHandle
(HttpServletRequest request,HttpServletResponse response,
Object handler) throws Exception
该方法在action执行前执行,可以实现对数据的预处理,比如:编码、安全控制等。
如果方法返回true,则继续执行action。
b) public void postHandle
(HttpServletRequest request,HttpServletResponse response,
Object handler,ModelAndView modelAndView) throws Exception
该方法在action执行后,生成视图前执行。在这里,我们有机会修改视图层数据。
c) public void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)throws Exception
最后执行,通常用于释放资源,处理异常。我们可以根据ex是否为空,来进行相关的异常处理。因为我们在平时处理异常时,都是从底层向上抛出异常,最后到了spring框架从而到了这个方法中。
2. 继承适配器类:
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
这个适配器实现了HandlerInterceptor接口。提供了这个接口中所有方法的空实现。
下面是我定义的两中实现拦截器的示例代码,仅供大家参考:
//方式1
package interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class MyInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("zxs-最后执行!!!一般用于释放资源!!");
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("zxs-Action执行之后,生成视图之前执行!!");
}
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("zxs-action之前执行!!!");
return true; // 继续执行action
}
}
//方式2
package interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
public class MyInterceptor2 extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyInterceptor2.preHandle()");
return true; // 继续执行action
}
}
3. springmvc-servlet.xml中如何添加如下配置,使用拦截器:
<mvc:interceptors>
<!-- 拦截器1会拦截所有.do请求 -->
<bean class="interceptor.MyInterceptor"></bean>
<!-- 拦截器2会拦截user.do请求 -->
<mvc:interceptor>
<mvc:mapping path="/user.do" />
<bean class="interceptor.MyInterceptor2"></bean>
</mvc:interceptor>
</mvc:interceptors>
- SpringMVC经典系列-14自定义SpringMVC的拦截器---【LinusZhu】
- SpringMVC经典系列-07讲解SpringMVC的ModelMap类---【LinusZhu】
- SpringMVC经典系列-08讲解SpringMVC的ModelAndVIew类---【LinusZhu】
- SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】
- SpringMVC经典系列-15对SpringMVC的总结---【LinusZhu】
- SpringMVC经典系列-01简介SpringMVC---【LinusZhu】
- SpringMVC经典系列-06讲解SpringMVC核心注解---【LinusZhu】
- SpringMVC经典系列-13使用SpringMVC处理Ajax请求---【LinusZhu】
- SpringMVC经典系列-09对SpringMVC的Controller层返回值的处理---【LinusZhu】
- SpringMVC经典系列-05深入了解SpringMVC的核心原理---【LinusZhu】
- SpringMVC经典系列-11简单获取request、session对象---【LinusZhu】
- SpringMVC经典系列-02基于Spring2.5注解的方式进行项目开发---【LinusZhu】
- SpringMVC经典系列-03基于Spring2.5采用XMl配置的方式进行项目开发---【LinusZhu】
- SpringMVC经典系列-04基于Spring3.1注解的方式进行项目开发---【LinusZhu】
- SpringMVC经典系列-10详解SpringMVC请求转发和重定向---【LinusZhu】
- SpringMVC-14 自定义拦截器
- springMVC 自定义拦截器
- springmvc自定义拦截器
- Eclipse中java生成注释文档
- Android 使用ThumbnailUtils类获取视频的缩略图
- Eclipse运行时提示“Failed to load the JNI shared library /Java/jre6/bin/client/jvm.dll”的一个解决方案
- iframe制作富文本编辑器各个浏览器换行的问题
- Ein weiterer Aspekt
- SpringMVC经典系列-14自定义SpringMVC的拦截器---【LinusZhu】
- java泛型
- CentOS配置smaba与Windows共享文件
- CSS、JS中的相对路径引用的区别
- Rails Rake指南
- 站在巨人的肩膀上学习Android开发
- 做新企网络营销怎么提高百度付费推广效果?
- 今天的天气不错 Kauai、love
- JQuery 判断某个属性是否存在 hasAttr