拦截器

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

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

原文地址:https://www.cnblogs.com/txf0324/p/11164456.html