Filter自动登陆

Dao层略过数组

Domain略过cookie

Service层过session

Web层jsp

Select逻辑spa

获取表单数据,Web—service——Dao返回用户信息code

若是返回不为null不然,重定向到登陆页面。则判断用户是否勾选7天免登陆,若是勾选(判断一下)。把用户数据存入session域中,而且要建立一个cookie设置时间为7天,保存cookie中.对象

 select代码:blog

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //得到表单数据
        String name = request.getParameter("username");
        String password = request.getParameter("password");
        //查询有没有该用户
        User u = new User(name, password);
        UserService us = new UserServiceImpl();
        User user = us.login(u);
        //用户帐号密码正确
        if (user != null) {
            //判断是否勾选7天免登录
            if ("ok".equals(request.getParameter("auto"))) {
                //数据保存到session中
                request.getSession().setAttribute("user", user);
                //保存信息到cookie中
                Cookie cookie = new Cookie("auto#"+name, password);
                cookie.setMaxAge(70 * 60);
                cookie.setPath("/");
                response.addCookie(cookie);
            }
            request.getRequestDispatcher("main.jsp").forward(request,
                    response);
        } else {
            response.sendRedirect("/autoFiler/index.jsp");
        }
    }

Filter过滤器逻辑get

Filter主要过滤index.jspit

得到cookie数组进行非空判断,若是cookie有值则遍历之,判断cookie是不是保存的有username的值,若是有则进行把cookie保存的用户名密码取出,调用service——Dao判断用户是否存在,若是存在转发到mian.jsp,并放行。若是不存在,重定向到index.Jsp登陆页面。若是cookie数组中没有保存该用户的cookie,则放行。

 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
            throws IOException, ServletException {
            HttpServletRequest req = (HttpServletRequest) request;
            HttpServletResponse res = (HttpServletResponse) response;
          //1. 获取cookie 判断非空
             Cookie[] cookies = req.getCookies();
             if(cookies!=null){
                  //2. 遍历cookie
                 for (Cookie cookie : cookies) {
                     //3. 判断cookie存在 name命名的值
                    if(cookie.getName().contains("auto")){
                        String username=cookie.getName().split("#")[1];
                        String password=cookie.getValue();
                        User u=new User(username,password);
                        UserService us = new UserServiceImpl();
                        User user = us.login(u);
                          //4.若是user对象存在    自动登陆
                        if(user!=null){
                            req.getSession().setAttribute("user", user);
                            request.getRequestDispatcher("main.jsp").forward(request,
                                    response);
                            chain.doFilter(req, res);
                        }else{
                              //5.若是不存在,从新跳转至登陆页面
                            res.sendRedirect("/autoFiler/index.jsp");
                            chain.doFilter(req, res);
                          }
                        }
                    }
                  chain.doFilter(req, res);
                }
             }
相关文章
相关标签/搜索