在Springmvc.xml文件中有这个
<mvc:mapping path:表示需要拦截过滤
<mvc:exclude-mapping :表示不需要拦截
<!-- 后台访问拦截器 -->
<!-- -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/admin/**"/>
<mvc:mapping path="/system/*"/>
<mvc:exclude-mapping path="/system/login"/>
<mvc:exclude-mapping path="/system/get_cpacha"/>
<mvc:exclude-mapping path="/resources/**"/>
<bean class="com.ischoolbar.programmer.interceptor.admin.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
我们在src中创建一个LoginInterceptor.java,需要实现(implements)HandlerInterceptor这个接口
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object arg2) throws Exception {
// TODO Auto-generated method stub
String requestURI = request.getRequestURI();
Object admin = request.getSession().getAttribute("admin");
if(admin == null){
//表示未登录或者登录失效
System.out.println("链接"+requestURI+"进入拦截器!");
String header = request.getHeader("X-Requested-With");
//判断是否是ajax请求
if("XMLHttpRequest".equals(header)){
//表示是ajax请求
Map<String, String> ret = new HashMap<String, String>();
ret.put("type", "error");
ret.put("msg", "登录会话超时或还未登录,请重新登录!");
response.getWriter().write(JSONObject.fromObject(ret).toString());
return false;
}
//表示是普通链接跳转,直接重定向到登录页面
response.sendRedirect(request.getServletContext().getContextPath() + "/system/login");
return false;
}