package com.ptpl.core.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.ptpl.constant.Session_Constant;
import com.ptpl.model.UserBaseAccountInfo;
import com.ptpl.web.util.StringUtil;
/**
* @ClassName: UserInterceptor
* @Package com.ptpl.core.interceptor
* @Description: TODO(用户后台拦截器 )
* @author shengliu
*/
public class UserInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3)
throws Exception {
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
UserBaseAccountInfo userBaseAccountInfo = (UserBaseAccountInfo) request.getSession()
.getAttribute(Session_Constant.USER);
if (userBaseAccountInfo != null) {
return true;
} else {
// http请求头(header)信息中的 x-requested-with有值且值为XMLHttpRequest时为Ajax异步请求
String requestType = request.getHeader("X-Requested-With");
// 判断是否为ajax请求
if (StringUtil.isNotEmpty(requestType) && requestType.equalsIgnoreCase("XMLHttpRequest")) {
// 该请求是Ajax异步请求
response.getWriter().print("logout");
} else {
// 该请求是传统的http同步请求
response.sendRedirect(request.getContextPath() + "/user/tologin.action");
}
return false;
}
}
}
package com.ptpl.core.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.ptpl.constant.Session_Constant;
import com.ptpl.model.AdminUser;
import com.ptpl.web.util.StringUtil;
/**
* @ClassName: AdminUserInterceptor
* @Package com.ptpl.core.interceptor
* @Description: TODO(管理员后台拦截器 )
* @author shengliu
*/
public class AdminUserInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception arg3)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView arg3)
throws Exception {
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
// 查询是否登录
AdminUser adminUser = (AdminUser) request.getSession().getAttribute(Session_Constant.ADMINUSER);
if (adminUser != null) {
return true;
} else {
// http请求头(header)信息中的 x-requested-with有值且值为XMLHttpRequest时为Ajax异步请求
String requestType = request.getHeader("X-Requested-With");
// 判断是否为ajax请求
if (StringUtil.isNotEmpty(requestType) && requestType.equalsIgnoreCase("XMLHttpRequest")) {
// 该请求是Ajax异步请求
response.getWriter().print("logout");
} else {
// 该请求是传统的http同步请求
response.sendRedirect(StringUtil.getBasePath(request) + "/admin/login.action");
}
return false;
}
}
}
<!-- 拦截器配置 -->
<mvc:interceptors>
<!-- 系统管理后台拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/adminuser/**" />
<mvc:mapping path="/admin/**" />
<mvc:exclude-mapping path="/admin/login.action" />
<bean class="com.ptpl.core.interceptor.AdminUserInterceptor" />
</mvc:interceptor>
<!-- 普通用户后台拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/user/**" />
<mvc:exclude-mapping path="/user/tologin.action" />
<mvc:exclude-mapping path="/user/tologin.action" />
<mvc:exclude-mapping path="/user/logined.action" />
<bean class="com.ptpl.core.interceptor.UserInterceptor" />
</mvc:interceptor>
</mvc:interceptors>