zoukankan      html  css  js  c++  java
  • 拦截器

    作用:拦截请求,一般做登录权限验证时用的比较多

    1需要编写自定义拦截器类,实现HandlerInterceptor接口

    2)在spirngMvc.xml中配置拦截器生效

    例如:

      拦截器应用于登陆验证:

    1、有一个登录页面,需要写一个controller访问页面

    2、登录页面有一提交表单的动作。需要在controller中处理。

    a)     判断用户名密码是否正确

    b)     如果正确 想session中写入用户信息

    c)     返回登录成功,或者跳转到商品列表

    3、拦截器。

    a)     拦截用户请求,判断用户是否登录

    b)     如果用户已经登录。放行

    c)     如果用户未登录,跳转到登录页面。

    1.1.1  用户身份认证

    Public class LoginInterceptor implements HandlerInterceptor{

        @Override

        Public boolean preHandle(HttpServletRequest request,

               HttpServletResponse response, Object handler) throws Exception {

           //如果是登录页面则放行

           if(request.getRequestURI().indexOf("login.action")>=0){

               return true;

           }

           HttpSession session = request.getSession();

           //如果用户已登录也放行

           if(session.getAttribute("user")!=null){

               return true;

           }

           //用户没有登录挑战到登录页面

           request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);

           return false;

        }

    }

    1.1.2 用户登陆controller

    //登陆页面

        @RequestMapping("/login")

        public String login(Model model)throws Exception{

          

           return "login";

        }

       

        //登陆提交

        //userid:用户账号,pwd:密码

        @RequestMapping("/loginsubmit")

        public String loginsubmit(HttpSession session,String userid,String pwd)throws Exception{

          

           //向session记录用户身份信息

           session.setAttribute("activeUser", userid);

          

           return "redirect:item/queryItem.action";

        }

        //退出

        @RequestMapping("/logout")

        public String logout(HttpSession session)throws Exception{

           //session过期

           session.invalidate();

           return "redirect:item/queryItem.action";

        }

    1.1.3  在springMvc中配置拦截器生效:

  • 相关阅读:
    Door Frames CodeForces
    POJ 3090 Visible Lattice Points (ZOJ 2777)
    从斐波那契到矩阵快速幂
    Recursive sequence (矩阵快速幂)2016ACM/ICPC亚洲区沈阳站
    c++ 类实现 AVL树容器(包含迭代器)
    c++ 链表类的实现(包含迭代器)
    HDU
    【几何+模拟】二次元变换 计蒜客
    【bfs+链式向前星】防御僵尸(defend)计蒜客
    deque in Python
  • 原文地址:https://www.cnblogs.com/txf0324/p/11164456.html
Copyright © 2011-2022 走看看