session和cookie完成自动登录

1.模拟登录

  • 目录图片


     
  • indexServlet代码

     
    package com.dl.code;
    
    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 java.io.IOException;
    
    /**
     * @公司 DL19121630工作室
     * @作者 代先生
     * @日期 2021/1/9 -- 10:16
     * @微信 D19121630L
     * @温馨提示:原创代码,翻版必究!如需代写,微信联系!
     */
    @WebServlet("/indexServlet")
    public class IndexServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //如果用户直接访问IndexServlet
            //先判断用户是否登录过,也就是判断cookie和session中是否有对应的值存在
            //获取cookie
            Cookie[] cookies = req.getCookies();
            String name = null;
            String password = null;
            //查找,键为name的cookie
            if (cookies!=null){
                for (Cookie cookie : cookies) {
                    if(cookie.getName().equals("name")){
                        //存入用户名
                        name=cookie.getValue();
                    }
    
                    if (cookie.getName().equals("password")){
                        //存入密码
                        password=cookie.getValue();
                    }
                }
            }
            //判断 name 和 password 是否为空,如果为空,则表明,没有成功登录过,则不允许自动登录
            if (name !=null && password !=null){
                //自动登录,跳转道主页面
                resp.sendRedirect("index-index.html");
            }else {
                resp.sendRedirect("login.html");
            }
        }
    }
    
  • LoginServlet代码
     
    package com.dl.code;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
    import java.io.IOException;
    
    /**
     * @公司 DL19121630工作室
     * @作者 代先生
     * @日期 2021/1/9 -- 10:16
     * @微信 D19121630L
     * @温馨提示:原创代码,翻版必究!如需代写,微信联系!
     */
    @WebServlet("/loginServlet")
    public class LoginServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req,resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           //登录的相关操作
            //设置请求编码
            req.setCharacterEncoding("utf-8");
            //获取用户输入的用户名和密码
            String userName = req.getParameter("userName");
            String password = req.getParameter("password");
    
            //判断账户是否存在,以及密码是否正确 -- 这里只进行模拟操作
            //模拟设置:账户名为:dl19121630 密码:123456789
            if (userName.equals("dl19121630")){
                //账户存在
                if (password.equals("123456789")){
                    //密码正确
                    //将账户名存入到cookie中
                    Cookie name = new Cookie("name",userName);
                    //将密码存入到cookie中
                    Cookie pwd = new Cookie("password", password);
                    //设置cookie的有效期限,这里设置成一个小时
                    name.setMaxAge(60*60);
                    pwd.setMaxAge(60*60);
                    //将cookie发送到浏览器
                    resp.addCookie(pwd);
                    resp.addCookie(name);
    
                    //将用户的密码保存到session中
                    //获取一个session
                    HttpSession session = req.getSession();
                    //将密码存入到session中
                    session.setAttribute("password",password);
                    //设置session的有效期
                    session.setMaxInactiveInterval(60*60);
                    //转发到主页面
                    resp.sendRedirect("index-index.html");
                    return;
                }
            }
    
            resp.sendRedirect("error.html");
        }
    }
    
  • LogoutServlet代码
     
    package com.dl.code;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.*;
    import java.io.IOException;
    
    /**
     * @公司 DL19121630工作室
     * @作者 代先生
     * @日期 2021/1/9 -- 10:19
     * @微信 D19121630L
     * @温馨提示:原创代码,翻版必究!如需代写,微信联系!
     */
    @WebServlet("/logoutServlet")
    public class LogoutServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req,resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //退出登录的操作
            //第一步:消除 cookie和session
            Cookie[] cookies = req.getCookies();
            for (Cookie cookie : cookies) {
                if(cookie.getName().equals("name")){
                    cookie.setMaxAge(0);
                    resp.addCookie(cookie);
                }
    
                if (cookie.getName().equals("password")){
                    cookie.setMaxAge(0);
                    resp.addCookie(cookie);
                }
            }
            HttpSession session = req.getSession(false);
            System.out.println(session);
            if (session != null){
                session.invalidate();
            }
    
            //跳转到登录页面
            resp.sendRedirect("login.html");
        }
    }
    
  •  

猜你喜欢

转载自blog.csdn.net/weixin_45634682/article/details/112391304
今日推荐