通过Spring MVC 的自定义拦截器实现灵活的登录拦截
来源:互联网 发布:js 质数 编辑:程序博客网 时间:2024/06/08 10:49
SpringMVC 中的Interceptor 拦截器,它的主要作用是拦截用户的请求并进行相应的处理。用户可以自定义拦截器来实现特定的功能,比如通过它来进行权限验证,或者是来判断用户是否登陆等。
SpringMVC的拦截器提供了HandlerInterceptorAdapter抽象类,对应提供了三个preHandle,postHandle,afterCompletion方法。
preHandle在业务处理器处理请求之前被调用,
postHandle在业务处理器处理请求执行完成后,生成视图之前执行,
afterCompletion在DispatcherServlet完全处理完请求后被调用,可用于清理资源等 。
所以要想实现自己的拦截管理逻辑,需要继承HandlerInterceptorAdapter并重写其三个方法。
下面以一个例子来通过SpringMVC 中的自定义Interceptor实现灵活的登录拦截,实现方式很简单。
1、新建一个CommInterceptor 继承 HandlerInterceptorAdapter 并重写其中三个方法。
public class CommInterceptor extends HandlerInterceptorAdapter{private final Logger log = LoggerFactory.getLogger(CommInterceptor.class);public String defultLogin="/account/login";//默认登录页面public Map<String,String> defineUrls;//自定义的Url,自定义拦截后的处理页面。 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //从session获取登录信息 if(SessionUtils.getAttribute(request, "user")!=null) { return true; } else { if(defineUrls!=null&&defineUrls.size()>0) { if(defineUrls.containsKey(url)) { defultLogin=defineUrls.get(url).toString(); } } log.info("Interceptor:跳转到login页面!"+defultLogin+"-----"); response.sendRedirect(request.getContextPath()+defultLogin); return false; } } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } public String getDefultLogin() {return defultLogin;}public void setDefultLogin(String defultLogin) {this.defultLogin = defultLogin;}public Map<String, String> getDefineUrls() {return defineUrls;}public void setDefineUrls(Map<String, String> defineUrls) {this.defineUrls = defineUrls;}}
2、在Spring 配置文件中配置自定义的拦截器。
<!--配置拦截器 --><mvc:interceptors><mvc:interceptor><!-- /**的意思是所有文件夹及里面的子文件夹 /*是所有文件夹,不含子文件夹 /是web项目的根目录 --><mvc:mapping path="/personCenter/*" /><mvc:mapping path="/web/exam/yuDingXinXi" /><mvc:mapping path="/web/preRegister/goYuYueDingDan" /><!-- 微信预约体检 --><mvc:mapping path="/exam/yuDingXinXi" /><!-- 微信体质辨识 --><mvc:mapping path="/healthJudge/healthJudge" /><bean class="com.transfar.webportal.chp.common.interceptor.CommInterceptor"><!--定义拦截后重定向到默认的登录处理页面 --><property name="defultLogin" value="/account/login" /><!--定义拦截后重定向到其他登录处理页面 --><property name="defineUrls"><map><entry key="/exam/yuDingXinXi" value="/connect/wx/start" /><entry key="/healthJudge/healthJudge" value="/connect/wx/start" /></map></property></bean></mvc:interceptor></mvc:interceptors>
这样就实现了灵活的登录拦截,并且能够根据不同的场景重新定向到不同的登录处理页面,我这里是拦截的需要登录的URL,如果是网站的走默认登录页面,微信的走微信认证登录的页面。
0 0
- 通过Spring MVC 的自定义拦截器实现灵活的登录拦截
- 通过Spring MVC 的自定义拦截器实现灵活的登录拦截
- Spring MVC实现的登录拦截器
- Spring MVC的自定义拦截器(登录)
- springmvc 自定义拦截器实现未登录用户的拦截
- Spring mvc拦截器实现登录验证拦截
- Spring MVC 拦截器的实现
- spring MVC拦截器的实现
- Spring-mvc自定义拦截器实现
- Spring MVC的拦截器
- Spring MVC的拦截器
- Spring MVC的拦截器
- Spring MVC的拦截器
- spring mvc登录拦截器
- spring mvc登录拦截器
- spring mvc 自定义拦截器
- Spring MVC自定义拦截器
- Spring MVC 自定义拦截器
- 41.我的收藏
- 牛客网刷题之构建乘积数组
- 移植SUI Mobile省市区选择器至PC端,使用select完成地区联动
- kero2
- CentOS学习17_CentOS升级openssl为最新版
- 通过Spring MVC 的自定义拦截器实现灵活的登录拦截
- Mac 上面使用cocoapods的一些问题
- eclipse颜色字体调整
- http://blog.csdn.net/zddblog/article/details/7521424
- 浅析JavaScript访问对象属性和方法及区别
- hue搭建(hadoop分布式环境)
- Java网络爬虫crawler4j学习笔记<21> Page 类
- java.lang.IllegalStateException: Activity has been destroyed
- OPENSSL ENGINE机制