Spring MVC拦截器详解
来源:互联网 发布:php 常量定义 使用 编辑:程序博客网 时间:2024/05/18 01:45
SpringMVC拦截器
1 定义
java里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。在AOP(Aspect-OrientedProgramming)中拦截器用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。SpringMVC 中的Interceptor 拦截器的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是登录认证等。
2 自定义拦截器
这里详解通过实现HandleInterceptor接口的方法。新建一个HandlerInterceptor的实现类,代码如下,该实现类中包括三个方法:
1)preHandle方法:该方法在controller执行前被调用,返回true表示继续执行,返回false表示终止执行。登录校验、权限拦截等可以写在此方法中。
2)postHandle方法:该方法在controller执行后但未返回ModelAndView之前被调用。一些公用信息可以被写在此方法中方便页面显示。
3)afterCompletion方法:该方法在controller执行完成后且已返回ModelAndView之后被调用。日志记录、异常返回等可写在此方法中。
Public class HandlerInterceptorCustomimplements HandlerInterceptor{
@Override
Public boolean preHandle(HttpServletRequestrequest,
HttpServletResponseresponse, Object handler) throws Exception {
// TODO Auto-generated method stub
Return false;
}
@Override
Public void postHandle(HttpServletRequestrequest,
HttpServletResponseresponse, Object handler,
ModelAndView modelAndView)throws Exception {
// TODO Auto-generated method stub
}
@Override
Public void afterCompletion(HttpServletRequestrequest,
HttpServletResponseresponse, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
}
3 拦截器配置
配置文件添加如下代码:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mappingpath="/**"/>
<bean class="cn.itcast.springmvc.filter.HandlerInterceptorCustom"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mappingpath="/**"/>
<bean class="cn.itcast.springmvc.filter.HandlerInterceptorCustom2"></bean>
</mvc:interceptor>
</mvc:interceptors>
4 登录认证拦截器代码
public class LoginInterceptor implements HandlerInterceptor {
//进入 Handler方法之前执行
//用于身份认证、身份授权
//比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Objecthandler)throws Exception {
//获取请求的url
String url = request.getRequestURI();
//判断url是否是公开地址(实际使用时将公开地址配置配置文件中)
//这里公开地址是登陆提交的地址
if(url.indexOf("login.action")>=0){
//如果进行登陆提交,放行
return true;
}
//判断session
HttpSession session = request.getSession();
//从session中取出用户身份信息
String username = (String)session.getAttribute("username");
if(username !=null){
//身份存在,放行
return true;
}
//执行这里表示用户身份需要认证,跳转登陆页面
request.getRequestDispatcher("adminLogin.jsp").forward(request,response);
//return false表示拦截,不向下执行
//return true表示放行
return false;
}
//进入Handler方法之后,返回modelAndView之前执行
//应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Objecthandler,
ModelAndView modelAndView)throws Exception {
}
//执行Handler完成执行此方法
//应用场景:统一异常处理,统一日志处理
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Objecthandler, Exceptionex)
throws Exception {
}
}
- spring mvc 拦截器 详解
- Spring MVC拦截器详解
- Spring mvc 拦截器 配置详解
- 码农小汪-Spring MVC 处理器拦截器详解
- Spring mvc 自定义拦截器【详解】
- Spring MVC拦截器DispatcherServlet详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring mvc拦截器和<mvc:annotation-driven />的详解
- spring-mvc拦截器和<mvc:annotation-driven />的详解
- Spring MVC 拦截器
- Java递归求解汉诺塔问题
- Oracle之DBMS_RANDOM 包用法详解
- POJ 3340 Barbara Bennett's Wild Numbers 可能会
- linux c之解决使用socket函数返回为0的问题
- 考研英语
- Spring MVC拦截器详解
- 读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
- android 自定义view+属性动画实现充电进度条
- 怎样通过差异化定位,让用户记住你?
- stm32电机lcd-5110
- 融云集成基础篇(一)
- tonesoft
- jdk动态代理
- SPOJ-TTM