一个 Spring 拦截器

本文介绍了一个具体的Spring拦截器实现案例,该拦截器用于检查用户的会话状态,确保已登录用户才能访问特定资源。若未登录则重定向至登录页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.common.core.interceptor;

import java.util.HashMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.iss.delver.entity.Classes;
import com.iss.delver.entity.Employee;
import com.iss.delver.entity.Tenant;

/**
* Spring 拦截器
*
* @author jhwen
*
*/

public class SessionInterceptor extends HandlerInterceptorAdapter {

private final Logger logger = Logger.getLogger(SessionInterceptor.class);

/**
* 在业务处理器处理请求之前被调用
*/
@SuppressWarnings("unchecked")
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object obj) throws Exception {
// TODO Auto-generated method stub

/**
* 拿到application上的hm
* 已经在登录的时候绑定 hm
*/
HashMap hm=(HashMap)request.getSession().getServletContext().getAttribute("hm");

//判断是否已经登录
if(hm == null){

//重新绑定
hm = new HashMap();
request.getSession().getServletContext().setAttribute("hm",hm);
// return true;

Employee emp = (Employee)request.getSession().getAttribute("emp");

Tenant tenant = (Tenant)request.getSession().getAttribute("tt");

Classes cls = (Classes)request.getSession().getAttribute("cls");

if(null == emp || null==tenant || null==cls){

response.sendRedirect("index.ftl");

return false;
}
return true;
}else{
return true;
}
}

/**
* 在业务处理器处理完请求后
*/
// @Override
// public void postHandle(HttpServletRequest request, HttpServletResponse response,
// Object handler, ModelAndView model) throws Exception {
// // TODO Auto-generated method stub
//
// logger.debug("===== postHandle ======");
//
// //拿到绑定在 session 上的对象
// Employee emp = (Employee)request.getSession().getAttribute("emp");
//
// Tenant tenant = (Tenant)request.getSession().getAttribute("tt");
//
// Classes cls = (Classes)request.getSession().getAttribute("cls");
//
// if(null == emp || null==tenant || null==cls){
// //如果未登录,则跳转到登录页面
// response.sendRedirect("index.ftl");
// }
// }
//
// /**
// * 在DispatcherServlet完全处理完请求后被调用
// */
// @Override
// public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
// throws Exception{
//
// logger.debug("===== afterCompletion ======");
//
// //拿到绑定在 session 上的对象
// Employee emp = (Employee)request.getSession().getAttribute("emp");
//
// Tenant tenant = (Tenant)request.getSession().getAttribute("tt");
//
// Classes cls = (Classes)request.getSession().getAttribute("cls");
//
// if(null == emp || null==tenant || null==cls){
// //如果未登录,则跳转到登录页面
// response.sendRedirect("index.ftl");
// }
// }

}


applicationContext.xml

<!-- 拦截器 -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" >
<property name="interceptors">

<bean class="com.iss.delver.common.core.interceptor.SessionInterceptor" />

</property>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值