-
依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。但是缺点是只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理
- 在spring-mvc配置文件中配置拦截器
<!--配置拦截器--> <mvc:interceptors> <mvc:interceptor> <mvc:mappingpath="/**"/> <mvc:exclude-mapping path="/**/fonts/*"/> <mvc:exclude-mapping path="/**/*.css"/> <mvc:exclude-mapping path="/**/*.js"/> <mvc:exclude-mapping path="/**/*.png"/> <mvc:exclude-mapping path="/**/*.gif"/> <mvc:exclude-mapping path="/**/*.jpg"/> <mvc:exclude-mapping path="/**/*.jpeg"/> <mvc:exclude-mapping path="/**/*login*"/> <mvc:exclude-mapping path="/**/*Login*"/> <beanclass="com.kaishengit.crm.controller.intercepter.LoginIntercepter"/> </mvc:interceptor> </mvc:interceptors>
- 创建拦截器类 extends HandlerInterceptorAdapter
重写preHandler方法
return true
通过
return false
拦截
/** * 登录状态拦截器 * Created bySPL on 2017/7/19 0019. */ public class LoginIntercepter extends HandlerInterceptorAdapter{ /** * 除了 /之外其他请求,都要判断是否登录(session) *return true;通过 *return false;拦截 * @paramrequest * @paramresponse * @paramhandler * @returnboolean * @throwsException */ @Override public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception { String url =request.getRequestURI(); if(url.startsWith("/static/")){ return true; } if("/".equals(url)){ return true; } else{ HttpSessionsession = request.getSession(); if(session.getAttribute("currentUser") == null){ response.sendRedirect("/"); return false; }else{ return true; } } } }
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交