首页 > 其他 > 详细

拦截器

时间:2019-07-10 16:30:54      阅读:98      评论:0      收藏:0      [点我收藏+]

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!