zoukankan      html  css  js  c++  java
  • springmvc中配置拦截器

    --------------------------------------------

    登陆controller方法

    @Controller
    public class LoginController {
    
        // 登陆
        @RequestMapping("/login")
        public String login(HttpSession session, String username, String password)
                throws Exception {
    
            // 调用service进行用户身份验证
            // ...
    
            // 在session中保存用户身份信息
            session.setAttribute("username", username);
            // 重定向到商品列表页面
            return "redirect:/items/queryItems.action";
        }
    
        // 退出
        @RequestMapping("/logout")
        public String logout(HttpSession session) throws Exception {
    
            // 清除session
            session.invalidate();
    
            // 重定向到商品列表页面
            return "redirect:/items/queryItems.action";
        }
    
    }

     登陆认证拦截实现

    public class LoginInterceptor implements HandlerInterceptor {
    
        
        //进入 Handler方法之前执行
        //用于身份认证、身份授权
        //比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
        @Override
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
            
            //获取请求的url
            String url = request.getRequestURI();
            //判断url是否是公开 地址(实际使用时将公开 地址配置配置文件中)
            //这里公开地址是登陆提交的地址
            if(url.indexOf("login.action")>=0){
                //如果进行登陆提交,放行
                return true;
            }
            
            //判断session
            HttpSession session  = request.getSession();
            //从session中取出用户身份信息
            String username = (String) session.getAttribute("username");
            
            if(username != null){
                //身份存在,放行
                return true;
            }
            
            //执行这里表示用户身份需要认证,跳转登陆页面
            request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
            
            //return false表示拦截,不向下执行
            //return true表示放行
            return false;
        }

     页面请求效果:

    请求商品列表页面(没有加入拦截器之前  是可以直接请求到的)

    http://localhost:8888/FirstSSM/item/queryItems.action

    请求被拦截  因为没有登录  所以跳转到登录页面   让用户登录

  • 相关阅读:
    Java EE 和 Java Web
    09-盒模型
    08-层叠性权重相同处理
    07-css的继承性和层叠性
    06-伪元素选择器
    05-伪类选择器
    04-属性选择器
    03-高级选择器
    02-css的选择器
    01-css的引入方式
  • 原文地址:https://www.cnblogs.com/Joke-Jay/p/7588580.html
Copyright © 2011-2022 走看看