JavaWeb-jsp自动登陆效果实现

自动登陆实现:

实验步骤:
1.要有登陆页面(用户名输入框,密码输入框,自动登陆勾选,提交按钮)

2.要有处理请求的servlet,能对登陆进行处理

3.测试:
如何勾选自动登陆,那么下次不用输入用户名和密码了,直接跳转到首页面

使用技术:
Cookie:
朝电脑硬盘上写入文本,保存用户名和密码,那么如果勾选自动登陆,
下次登陆就会从硬盘上读取保存的用户名和密码,那么就不用输入了。


第一步:login.jsp


username:${message }

password:

是否自动登陆:


第二步:UserServlet

private void Login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /* 处理登陆请求
         * 登陆的时候要做的事情:1.验证码  2.非空校验  3.自动登陆  4.放入session  5.跳转  6.用户的合法性校验
         */
        //   获取表单数据---非空校验---验证码是否匹配----校验用户的合法性---放入session--如果自动登陆那么写cookie--跳转
        /*1.什么时候跳转,什么时候重定向
         * 更新操作结束99%都是重定向,如果不重定向,那么刷新页面,又更新一次
         * 注意:由于跳转比重定向效率高,所以不要随便重定向
         * 查询结束,那就跳转
         * 如果用户访问的首页面在WEB-INF目录下,那么只能跳转,
         */
        //1. 获取表单数据
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        String isAutologin=request.getParameter("isAutologin");
        
        System.out.println("username:"+username);
        System.out.println("password:"+password);
        System.out.println("isAutologin:"+isAutologin);
        
        //2.非空校验
        if(username==null&&password==null)
        {
            request.setAttribute("message", "请输入用户名和密码");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
        
        //3.校验用户的合法性
        /*生产环境这样写:
         * Users user_result=userDao.queryUserByUsernameAndPassword(user);
         * if(user_result!=null)
         */
        
        
        if("zhangsan".equals(username)&&"123".equals(password))
        {
            //4.放入session
            HttpSession session=request.getSession();
            session.setAttribute("username", username);
            //生产环境这样写: session.setAttribute("user",user);
            
            //5.如果自动登陆那么写cookie
            if(isAutologin!=null)
            {
                writeCookie(request, response, username, password);
            }
            
            //6.跳转到首页面
            request.getRequestDispatcher("/user/index.jsp").forward(request, response);
            
        }else {
            request.setAttribute("message", "用户名或密码错误");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    
第三步:写cookie
//写cookie
    private void writeCookie(HttpServletRequest request,
            HttpServletResponse response, String username, String password) {
        //怎么写cookie?
        Cookie cookie_username=new Cookie("username", username);
        Cookie cookie_password=new Cookie("password", password);
        
        //设置cookie的有效期,只要设置这个参数,那么cookie一定写入硬盘保存
        cookie_username.setMaxAge(7*24*60*60);//一周自动登陆,会写硬盘
        cookie_password.setMaxAge(7*24*60*60);//一周自动登陆,会写硬盘
        
        //设置cookie的保存路径
        cookie_username.setPath(request.getContextPath()+"/");
        cookie_password.setPath(request.getContextPath()+"/");
        
        //写cookie
        response.addCookie(cookie_username);
        response.addCookie(cookie_password);
    }
    
第四步:login.jsp页面自动登陆判断
    <%
//进行自动登陆的代码
//思路:1.获取cookie  2.从cookie中获取username password  3.如果不为空,那么合法  4.把username放入session 5.那么跳转到首页面
//1.获取cookie
Cookie[] cookies=request.getCookies();

//2.从cookie中获取username password 
String username=null;
String password=null;
if(cookies!=null)
{
    for(Cookie c:cookies)//Cookie cookie_password=new Cookie("password", password);
    {
        if("username".equals(c.getName()))
        {
            username=c.getValue();//zhangsan
        }
        if("password".equals(c.getName()))
        {
            password=c.getValue();//123
        }
    }
}

//3.如果不为空,那么合法 
    if(username!=null&&password!=null&&!"".equals(username)&&!"".equals(password))
    {
        //4.把username放入session
        session.setAttribute("username", username);
        //5.那么跳转到首页面
        request.getRequestDispatcher("/user/index.jsp").forward(request, response);
    }
//

%>
    
       

你可能感兴趣的:(JavaWeb)