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中配置拦截器生效:

  • 相关阅读:
    nginx简单配置
    解决 eclipse出现 Address already in use: bind
    JavaScript 正则表达式学习
    RabbitMQ的介绍与spring整合
    RabbitMQ的安装与客户端的简单实用
    java中的break与continue
    书单
    (七)SpringBoot2.0基础篇- application.properties属性文件的解析及获取
    (六)SpringBoot2.0基础篇- MyBatis、Redis整合(JedisCluster集群连接)
    (五)SpringBoot2.0基础篇- Mybatis与插件生成代码
  • 原文地址:https://www.cnblogs.com/txf0324/p/11164456.html
Copyright © 2011-2022 走看看