Cookie的应用——Servlet实现三天免登录

Cookie的应用——Servlet实现三天免登录,第1张

概述1、工程结构:    2、Servlet的运用: (1)登录界面: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; cha

1、工程结构:

 

 2、Servlet的运用:

(1)登录界面:

protected voID doGet(httpServletRequest request,httpServletResponse response) throws servletexception,IOException {        response.setContentType("text/HTML; charset=utf-8");//设置浏览器编码格式        response.getWriter().write("<HTML>");        response.getWriter().write("<head>");        response.getWriter().write("<Title>");        response.getWriter().write("Login");        response.getWriter().write("</Title>");        response.getWriter().write("</head>");        response.getWriter().write("<body bgcolor=\"aqua\">");        response.getWriter().write("<center>");        response.getWriter().write("<h3>");        response.getWriter().write("登录");        response.getWriter().write("</h3>");        response.getWriter().write("<form action=\"/Servlet_login_war_exploded/login\" method=\"get\">");        response.getWriter().write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用户名:<input type=\"text\" name=\"username\" size=\"12\"><br>");        response.getWriter().write("密&nbsp;&nbsp;码 :<input type=\"password\" name=\"password\" size=\"6\" ><br><br>");        response.getWriter().write("<input type=\"submit\" value=\"登录\">");        response.getWriter().write("<input type=\"reset\" value=\"取消\">");        response.getWriter().write("</form>");        response.getWriter().write("</center>");        response.getWriter().write("</body>");        response.getWriter().write("</HTML>");    }

 

 (2)LogServlet实现数据库和表单数据的连接,如果在数据库中有对应的用户登录信息则登录成功。如果是第一次登录,还需要建立cookie,以便下次登陆的时候能够直接读取cookie中的信息,不用再手动输入自己的信息。

protected voID doGet(httpServletRequest request,IOException {        Connection con=null;        login log= null;        String account=request.getParameter("username");//获得表单数据        String password=request.getParameter("password");        cookie cookie=new cookie(account,password);        cookie.setPath("/Servlet_login_war_exploded/cookie");        cookie.setMaxAge(3*24*3600);//三天        response.addcookie(cookie);        try {            con=C3p0Utils.getConnection();            queryRunner qr = new queryRunner();            String sql = "Select * from login where account=? and password=?";            Object[] select = {account,password};            log = qr.query(con,sql,new BeanHandler<login>((login.class)),select);            if(log!=null){                response.getWriter().write("nihao"+account);            }            else{                response.getWriter().write("wrong");            }        }        catch (sqlException e) {            throw new RuntimeException(e);        }    }

 

 在响应中,存在cookie信息和cookie的过期时间。

(3)查询cookie是否存在,如果存在,再与数据库中的信息进行对比(只有cookie是不行的,防止用户已经对账户注销,即数据库中已经没有了用户的信息,而使用cookie进行登录显然是不合理的)

protected voID doGet(httpServletRequest request,IOException {        request.setCharacterEnCoding("utf-8");        response.setContentType("text/HTML; charset=utf-8");//设置浏览器编码格式        cookie[] cookies=request.getcookies();        Connection con=null;        login log= null;        int successNum=0;        try {            con= C3p0Utils.getConnection();            queryRunner qr = new queryRunner();            String sql = "Select * from login";            List<login> List = qr.query(con,new BeanListHandler<login>((login.class)));            if(cookies!=null) {//验证数据库中是否有与cookie对应的用户                for (int i = 0; i < List.size(); i++) {                    log= List.get(i);                for (cookie cookie : cookies) {                        if((log.getAccount().equals(cookie.getname()))&&(log.getpassword().equals(cookie.getValue()))){                           successNum++;                        }                }                }                if(successNum>=1){                    response.getWriter().write("Successful login with cookie!");                }                else{                    request.getRequestdispatcher("page").forward(request,response);                }            }            else{                request.getRequestdispatcher("page").forward(request,response);//请求转发            }        }        catch (sqlException e) {            throw new RuntimeException(e);        }    }

(4)过程演示:

第一次访问cookieServlet(因为没有cookie,或者没有符合要求的cookie,因此要手动输入实现登录):

 

 点击登录(在这个过程中,已经生成了cookie):

 

 第二次访问cookieServlet(将cookie中的信息与数据库中的数据进行比对),下图是已经有cookie的情况:

 

 显然:第二次访问的时候,没有登录界面,可以直接调用cookie中的数据。

总结

以上是内存溢出为你收集整理的Cookie的应用——Servlet实现三天免登录全部内容,希望文章能够帮你解决Cookie的应用——Servlet实现三天免登录所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1034119.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存