springMVC中拦截器的配置
来源:互联网 发布:淘宝进口牛肉便宜 编辑:程序博客网 时间:2024/05/21 11:13
本文基于springMVC框架,以自定义拦截器为例。
SpringMVC的拦截器HandlerInterceptorAdapter对应提供了三个preHandle,postHandle,afterCompletion方法。
preHandle在业务处理器处理请求之前被调用,
postHandle在业务处理器处理请求执行完成后,生成视图之前执行,
afterCompletion在DispatcherServlet完全处理完请求后被调用,可用于清理资源等 。所以要想实现自己的权限管理逻辑,需要继承HandlerInterceptorAdapter并重写其三个方法。
- springmvc.xml中配置
<!-- 拦截所有springmvc的url! --> <mvc:interceptors> <bean class="com.interceptor.SessionInterceptor"></bean> </mvc:interceptors>
2 ,SessionInterceptor.java代码,我这里全部贴了。
package com.interceptor;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import com.entity.User;public class SessionInterceptor extends HandlerInterceptorAdapter { private static final Map<Integer, User> userMap = new HashMap<Integer, User>(); @Override public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception { //注册,不拦截 if(request.getRequestURL().toString().endsWith("register.do")){ return true; } //不是登录请求,判断是否已经登录 if(!request.getRequestURL().toString().endsWith("login.do")){ User user = (User) request.getSession().getAttribute("user"); if(user!=null){ Integer userId = user.getUserid(); User mapUser = userMap.get(userId); if((request.getSession().getId() != mapUser.getSessionId()) && ( System.currentTimeMillis() - mapUser.getLoginTime() > 5000 )) { response.sendRedirect(request.getContextPath()+"/login.jsp"); return false; } }else{ response.sendRedirect(request.getContextPath()+"/login.jsp"); return false; } } return true; } @Override public void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { if(request.getRequestURL().toString().endsWith("login.do")) { User user = (User)request.getSession().getAttribute("user"); if(null!=user){ User user1 = new User(); user1.setSessionId(request.getSession().getId()); user1.setLoginTime(System.currentTimeMillis()); userMap.put(user.getUserid(), user1); } } }}
0 1
- springMVC中拦截器的配置
- springmvc的拦截器配置
- SpringMVC拦截器配置中/和/*的区别
- SpringMVC中拦截器配置中拦截地址整理
- SpringMVC中Session超时拦截器配置
- SpringMVC中Session超时拦截器配置
- springmvc中如何配置拦截器
- springmvc 拦截器配置
- springMVC拦截器配置
- springMvc拦截器配置
- SpringMvc拦截器配置
- SpringMvc配置拦截器
- springmvc拦截器配置
- SpringMvc拦截器配置
- springmvc拦截器配置
- springmvc拦截器配置
- springMVC拦截器配置
- springmvc配置拦截器
- RabbitMQ-理解消息通信-消费者和生产者
- 进程通信概念和进程通信方式
- SVG:textPath深入理解
- make[1]: *** 警告:文件的修改时间在将来2.1e+07
- 图片浏览器:利用UIScrollView做类似微信好友文件中的图片浏览器(缩放、单击退出、双击放大等)
- springMVC中拦截器的配置
- Kubernetes 1.6新特性系列 | 动态配置和存储类
- 如何使VMware ip与本机ip处于同一网段
- redis应用学习
- SPI串行存储器
- ubuntu修改mysql 5.7 数据存储目录datadir
- jstl 问题rg.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot
- seq2seq lecture
- Properties文件处理方式