public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //获取session中存储的登录用户的信息 Admin admin = (Admin) request.getSession().getAttribute("loginAdmin"); Object parentMenu = request.getSession().getAttribute("parentMenu"); Object subMenu = request.getSession().getAttribute("subMenu"); if(admin == null || admin.getUserName() == null || parentMenu == null || subMenu == null){ //判断是否是Ajax请求 获取到请求头中的Ajax参数 String XRequested =request.getHeader("X-Requested-With"); //Ajax请求中带有的参数 String ajaxReq = "XMLHttpRequest"; if(ajaxReq.equals(XRequested)) { Map<String, Object> map = new HashMap<>(1); map.put("result", "IsAdminAjax"); String data = JSON.toJSONString(map); response.getWriter().write(data); return false; } else { System.out.println("拦截请求"); System.out.println("请求地址为:" + request.getRequestURI()); response.sendRedirect(request.getContextPath()+"/system/toTimeOutPage"); } return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
时间: 2024-02-14 15:23:28 浏览: 69
Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_10_拦截器 共7页.pptx
这段代码是一个 Java 类,实现了 HandlerInterceptor 接口,并重写了 preHandle、postHandle 和 afterCompletion 方法。这个类用于拦截请求,在用户未登录或者登录失效时,跳转到登录页面或者返回 AJAX 请求。其中,preHandle 方法用于在请求处理之前进行拦截,判断用户是否登录,如果未登录或者登录失效,则根据请求类型进行相应的处理。如果是 AJAX 请求,则返回一个 JSON 格式的字符串,否则重定向到登录页面。postHandle 和 afterCompletion 方法则用于在请求处理之后进行拦截,但是这个类中这两个方法都为空实现。
阅读全文