zoukankan      html  css  js  c++  java
  • 自动登录——(三)

    1.   登录页面定义一个自动登录复选框

    <span id="auto"></span><input type="checkbox" name="autologin" value="autologin"><lable style="color:red">自动登录</lable></span>

    2.用户登录的时候判断用户是否选中自动登录,如果选中后设置cookie。

    package web;
    
    import java.io.IOException;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import daomain.User;
    import service.UserService;
    
    /**
     * 
     * @author: qlq
     * @date : 2017年7月6日上午10:19:37
     * @description: chuli denglu
     */
    
    @WebServlet("/login")
    public class login extends HttpServlet {
        private UserService userService = null;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            request.setCharacterEncoding("UTF-8");
            // 获取客户端输入
            String name = request.getParameter("name");  
            System.out.println(name);
            String password = request.getParameter("password");
            System.out.println(name + "	" + password);
            userService = new UserService();
            User user = userService.findUserByNamePassword(name, password);
            // 登录成功
            if (user != null) {
                System.out.println(user.getName() + user.getPassword());
                request.getSession().setAttribute("user", user);
                System.out.println(user);
                String autologin = request.getParameter("autologin");
    //            如果用户选择自动登录
                if (autologin != null) {
    //                增加cookie,解码防止中文乱码
                    Cookie cookie_username=new Cookie("username", URLEncoder.encode(user.getName(),"UTF-8"));
                    Cookie cookie_password=new Cookie("password", user.getPassword());
    //                设置生命期
                    cookie_password.setMaxAge(60*60*24);
                    cookie_username.setMaxAge(60*60*24);
    //                设置cookie的携带路径
                    cookie_password.setPath(request.getContextPath());
                    cookie_username.setPath(request.getContextPath());
    //                增加cookie
                    response.addCookie(cookie_username);
                    response.addCookie(cookie_password);
                    System.out.println(autologin);
                    
                } else {
    
                }
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }
            // 登录失败
            else {
                request.getRequestDispatcher("/login.html").forward(request, response);
            }
    
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    }

     3.设置一个自动登录过滤器

    package web.filter;
    
    import java.io.IOException;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    
    import javax.activation.URLDataSource;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import daomain.User;
    import service.UserService;
    
    /**
     * Servlet Filter implementation class autoLoginFilter
     */
    public class autoLoginFilter implements Filter {
    
        /**
         * Default constructor. 
         */
        public autoLoginFilter() {
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see Filter#destroy()
         */
        public void destroy() {
            // TODO Auto-generated method stub
        }
    
    
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    //        获得cookie进行用户名进行登录
            HttpServletRequest req =(HttpServletRequest) request;
            HttpServletResponse res = (HttpServletResponse) response;
            HttpSession session = req.getSession();
            Cookie[] cookies = req.getCookies();
            String username = null;
            String password = null;
            
            if(cookies!=null){
    //            获得名字是username password的cookie
                for(Cookie cookie:cookies){
                    if(cookie.getName().equals("username")){
    //                    cookie不能设置中文,需要进行编码
                        username = URLDecoder.decode(cookie.getValue(), "UTF-8");
                    }
                    if(cookie.getName().equals("password")){
                        password = cookie.getValue();
                    }
                }
            }
            
    //        判断用户名和密码是否为空
            if(username!=null&&password!=null){
                UserService userService = new UserService();
                User user = userService.findUserByNamePassword(username, password);
                // 登录成功
                if (user != null) {
                    System.out.println(user.getName() + user.getPassword());
                    session.setAttribute("user", user);
                    }
            }
            // pass the request along the filter chain
            chain.doFilter(request, response);
        }
    
        /**
         * @see Filter#init(FilterConfig)
         */
        public void init(FilterConfig fConfig) throws ServletException {
            // TODO Auto-generated method stub
        }
    
    }

    4.web.xml配置过滤器

      <filter>
        <filter-name>login</filter-name>
        <filter-class>web.filter.autoLoginFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>login</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping> 

    5.自动登录一次查看cookie

  • 相关阅读:
    洛谷
    洛谷
    洛谷
    51nod
    洛谷
    洛谷
    51nod
    洛谷
    2019五一训练记录
    2019.5.4备战省赛组队训练赛第十九场
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/7301274.html
Copyright © 2011-2022 走看看