1、使用Cookie实现的登录的不足:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Connection con=null;
        login log= null;
        String account=request.getParameter("username");//获得表单数据只在此Servlet起作用
        String password=request.getParameter("password");
        Cookie cookie=new Cookie(account,password);
        cookie.setPath("/Servlet_login_war_exploded/cookie");
        cookie.setMaxAge(**);
        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);
        }
    }
  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("欢迎你"+request.getParameter("account"));
        response.getWriter().write("</h3>");
        response.getWriter().write("</center>");
        response.getWriter().write("</body>");
    }

使用Cookie虽然实现了三天免登陆的基础功能,但是,如果在用Cookie登录成功后需要重定向到另外一个Cookie时,request获取的值在重定向的Servlet中已经不再起作用了。访问的结果只能是空值。

2、使用Session的请求共享功能,实现在不同的Servlet跳转过程中依旧能够通过request获得用户信息。

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=utf-8");//设置浏览器编码格式
        Cookie[] cookies=request.getCookies();
        Connection con=null;
        login log= null;
        ;
        try {
            con= C3p0Utils.getConnection();
            QueryRunner qr = new QueryRunner();
            String sql = "Select * from login";
            List<login> list = qr.query(con, sql, new BeanListHandler<login>((login.class)));
            if(cookies!=null) {//验证数据库中是否有与Cookie对应的用户
                ; i < list.size(); i++) {
                    log= list.get(i);
                for (Cookie cookie : cookies) {
                        if((log.getAccount().equals(cookie.getName()))&&(log.getPassword().equals(cookie.getValue()))){
                            HttpSession httpSession=request.getSession();
                            httpSession.setAttribute("login",log);
                           successNum++;
                        }
                }
                }
                ){

                    response.sendRedirect("/Servlet_login_war_exploded/main");//重定向
                }
                else{
                    request.getRequestDispatcher("page").forward(request,response);
                }

            }
            else{
                request.getRequestDispatcher("page").forward(request,response);//请求转发
            }
        }
        catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

在通过Cookie登录成功后,创建了Session,对Session进行了赋值,而在重定向到MainServlet后,可以冲Session中获取值。虽然在不同的Servlet中,是不同的请求,但是依旧能够通过Session获取值。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        login log= (login) request.getSession().getAttribute("login");
        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("欢迎你"+log.getAccount());
        response.getWriter().write("</h3>");
        response.getWriter().write("</center>");
        response.getWriter().write("</body>");
    }

最新文章

  1. Linux 查看进程和删除进程
  2. 基于Vue封装分页组件
  3. 树莓派实现远程开机局域网电脑(WOL协议+etherwake+华硕主板Z97)秒变花生壳开机棒
  4. MyBatis 特殊字符处理
  5. Think in java 4th读书笔记__last update20151130
  6. mysql的常用函数
  7. 【液晶模块系列基础视频】5.4.X-GUI字体驱动4
  8. ThinkSNS插件的使用方法
  9. artdialog 提示 确定或取消
  10. 提升你的Java应用性能:改善数据处理
  11. hdu4858 项目管理 bestcoder round1 B
  12. 搭建AVL树
  13. Python的路径引用
  14. Java基础—标识符及命名规范
  15. [转载]mysql绑定参数bind_param原理以及防SQL注入
  16. JavaScript基础知识(JSON、Function对象、原型、引用类型)
  17. Phoenix(SQL On HBase)
  18. 探究高级的Kotlin Coroutines知识
  19. python注册到eureka
  20. 总结一下《vue的使用》

热门文章

  1. [BZOJ2739]最远点(DP+分治+决策单调性)
  2. 广度优先搜索(BFS)思路及算法分析
  3. PL/SQL不安装ORACLE客户端
  4. 【Java拾遗】Java transient关键字
  5. Spring中ApplicationContextAware的作用
  6. ChipGenius 识别U盘主控信息
  7. Mycat分布式数据库架构解决方案--Server.xml详解
  8. BUAA OO 2019 第四单元作业总结
  9. Spring Boot 笔记 (1) - Maven、基本配置、Profile的使用
  10. python中csv模块和join函数的使用