SSM配置登录拦截器

SSM配置登录拦截器

1.xml配置

<!-- 配置interceptors -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 拦截所有mvc控制器 -->
            <mvc:mapping path="/other/**"/>
            <!-- mvc:exclude-mapping不拦截的请求url地址了 -->
           	<mvc:exclude-mapping path="/other/login/login.do" /> 
			<bean class="com.test.other.interceptor.SysInterceptor"/>
		</mvc:interceptor>
	</mvc:interceptors>

2.拦截器

/**
 * 用户登录拦截器
 * @author wwh
 * @memo 备注信息
 */
public class SysInterceptor extends HandlerInterceptorAdapter {//继承 HandlerInterceptorAdapter 抽象类,或实现 HandlerInterceptor 这个接口

	private Logger logger = Logger.getLogger(SysInterceptor.class);
	
	public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception{
		logger.debug("SysInterceptor preHandle ==========================");
		HttpSession session = request.getSession();
		
		User user = (User)session.getAttribute(Constants.USER_SESSION);
		
		if(null != user){ //user 已登录
			return true;
		}else{
			//response.sendRedirect(request.getContextPath()+"/403.jsp");
			Map<String,Object> result = new HashMap<String, Object>();
			result.put("code",Constants.FAIL);
			result.put("msg","身份信息已失效,请先重新登录!");
			jsonOut(result);
			
			return false;
		}
		
	}
	
	/**
	 * 将对象转化为json,并输出json字符串
	 * @param object
	 * @return
	 */
	private void jsonOut(Object object)  {
		try{
			ObjectMapper objectMapper = new ObjectMapper();
			String jsonString = objectMapper.writeValueAsString(object);
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setContentType("text/json;charset=utf-8");
			response.getWriter().print(jsonString);
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
}

2.1方法解析

afterCompletion
整个请求处理完毕回调方法,即在视图渲染完毕时回调。
postHandle
在处理程序执行之后执行.也就是在Controller的方法调用之后执行,但是它会在DispatcherServlet进行视图的渲染之前执行,
preHandle
在实际处理程序执行之前执行. 该方法将在Controller处理之前进行调用.返回true, 请求继续往下执行, 如果返回false, DispatcherServlet会假定请求已被拦截器处理完成了(不再继续执行其他逻辑).
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值