cookie自动登录是指把用户登录的信息按期限(自定)保存在客户端,当用户请求登录时判断客户端用没有cookie对象,有的话填充值,否则登录界面的输入框为空,不进行填充。
     登录界面之前在添加一个选择登录的jsp页面,通过选择“去登录”,servlet判断客户端此次有没有cookie对象。所以需要添加一个JSP页面和一个servlet。
index.jsp部分代码:
<body>
   <a href="/t31/AdminSer?status=auto">先去登录</a>   
 </body>
login.jsp部分代码:
<body>
    <form action="/t31/AdminSer" method="post">
        管理员姓名:<input type="text" name="aname" value="${requestScope.aname}" /><br/>
        管理员密码:<input type="text" name="apass" value="${requestScope.apass}" /><br/>
        ${requestScope.error}<br/>
        <select name="auto">
            <option value="0">不自动填充</option>
            <option value="7">一周</option>
            <option value="30">一月</option>
        </select><br/>
        <input type="submit" value="提交" />
        <input type="hidden" name="status" value="login" />
    </form>
</body>
servlet部分代码:
if(status.equals("login")){
            String aname = request.getParameter("aname");
            String apass = request.getParameter("apass");
            if (aname.equals(apass)) {
                /*将用户登录名放到session中*/
                HttpSession session = request.getSession();
                session.setAttribute("aname", aname);
                /*判断用户是否需要保存自己的登录信息 */
                Cookie anameCookie=new Cookie("aname",aname);
                Cookie apassCookie=new Cookie("apass",apass);
                /*计算保存时间*/
                anameCookie.setMaxAge(60*60*24*Integer.parseInt(request.getParameter("auto")));
                apassCookie.setMaxAge(anameCookie.getMaxAge());
                /*response代表响应 */
                response.addCookie(anameCookie);
                response.addCookie(apassCookie);
                /*页面重定向*/
                response.sendRedirect("/t31/queryStudent.jsp");
            } else{
                request.setAttribute("error", "登录失败");
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }
        }else if(status.equals("auto")){
            Cookie[] cookies=request.getCookies();
            for(Cookie cookie:cookies){
                if(cookie.getName().equals("aname")){
                    request.setAttribute("aname", cookie.getValue());
                }
                if(cookie.getName().equals("apass")){
                    request.setAttribute("apass", cookie.getValue());
                }
            }
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }
 
 
 
 
创建cookie
Cookie cookie = new Cookie(String name,String value);
response.addCookie(cookie);
 
查询cookie
//如果没有cookie,则返回null。
Cookie[] cookies = request.getCookies();
String name = cookie.getName();
String value = cookie.getValue();
 
 
cookie的限制
cookie可以禁止
cookie的大小有限制(4k左右)
cookie的数量也有限制(浏览器大约能保存300个)
cookie的值叧能是字符串,要考虑编码问题。
cookie不安全
 
 
保存和查询Cookie流程
a. 浏览器向服务器发送addCookie请求 
服务器中的AddCookieServlet创建了两个Cookie:cookie和cookie2
 
b. 服务器端执行语句response.addCookie(cookie);生成消息头“set-cookie”, 
并将两个Cookie以键值对的方式(“name=aaa”、“passwd=123”)存放在消息头中发 送给浏览器
 
c. 浏览器将Cookie信息保存到本地内存中
 
d. 浏览器继续向服务器发送请求(带着消息头cookie) 
服务器端的FindCookieServlet找到Cookie信息,并显示给浏览器
 
 

cookie自动登录的实现的更多相关文章

  1. 如何设计相对安全的cookie自动登录系统

    很多网站登录的时候,都会有一个"记住我"功能,用户可以在限定时间段内免登录, 比如豆瓣.人人.新浪微博等都有这种设计.这种技术其实就是基于 cookie的自动登录, 用户登录的时候 ...

  2. jsp使用cookie自动登录

    Login.jsp <%@ page language="java" import="java.util.*" pageEncoding="ut ...

  3. 8、Django实战第8天:session和cookie自动登录机制

    因为http是无状态协议,因此,并不会记录用户的登录状态.在早期,是直接把用户名和密码等信息存储在浏览器的cookie来实现记录用户密码登录. 但是这样存在安全隐患,只要别人登录你的电脑cookie信 ...

  4. 爬虫模拟cookie自动登录(人人网自动登录)

    什么是cookie? 在网站中,HTTP请求时无状态的,也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是谁,cookie的出现就是为了解决这个问题,第一次登陆后服 ...

  5. session和cookie自动登录机制

    cookie的存储 cookie是浏览器支持的一种本地存储方式.以dict,键值对方式存储. {"sessionkey": "123"} 浏览器会自动对于它进行 ...

  6. 5.servlet cookie自动登录的实例

    1.要建的文档,.java用servlet创建 2.建一张登陆表格 index.jsp <%@ page language="java" import="java. ...

  7. 第十一篇 session和cookie自动登录机制

    session和cookie的作用和区别可以在网上查到,这里简单说下,我们使用的http协议本身是种无状态的协议,就是说web服务器接收到浏览器的请求,会直接返回相应内容,并不会检查是哪个浏览器,即浏 ...

  8. Servlet实现Cookie自动登录,并显示保存的用户信息

    转自:https://blog.csdn.net/qq_29612963/article/details/51100565

  9. 使用cookie实现自动登录

    一.从登录——>主页面,进行的过程是,输入 用户名和密码,以及验证码,点击“登录”跳转到Activity.jsp login1.action(跳转到登录页面) /** 跳转到login(有积分排 ...

随机推荐

  1. SpringMVC(二) SpringMVC Hello World

    准备条件: STS(集成了Spring相关工具的Eclipse) Spring软件包 spring-framework-4.3.3.RELEASE-dist.zip. 步骤: 加入jar包. Ecli ...

  2. sqlite like 通配符 ,匹配区分大小写(默认不区分大小写)

    在查询前先执行这个语句 , 1 时区分大小写,0时不区分 PRAGMA case_sensitive_like =0; select prod_name,PROD_PRICEfrom products ...

  3. 关于XML中:XmlNode和XmlElement的涵义及不同之处

    今天学习XML,遇到XmlNode和XmlElement俩个类,故有了下文的所述: 今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement.这两个类的功能极其 ...

  4. 【转】Oracle执行计划解释

    Oracle执行计划解释 一.相关的概念     Rowid的概念:rowid是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的. 对每个表都有一个rowid的伪列,但是表中并不物 ...

  5. 单片机与控制实验(5)——重量测量并在LCD12864显示

    一.实验目的和要求 掌握点阵式液晶显示屏的原理和控制方法,掌握点阵字符的显示方法.掌握模拟/数字(A/D)转换方式,进一步掌握使用C51语言编写程序的方法,使用C51语言编写实现重量测量的功能. 二. ...

  6. JFreeChart

    花了四个小时给同学写的.还行吧,原来都没有用过到处找资料写的. package DrawLine; import org.jfree.chart.ChartFactory; import org.jf ...

  7. JAVA集合类型详解

    一.前言 作为java面试的常客[集合类型]是永恒的话题:在开发中,主要了解具体的使用,没有太多的去关注具体的理论说明,掌握那几种常用的集合类型貌似也就够使用了:导致这一些集合类型的理论有可能经常的忘 ...

  8. [ACM训练] 算法初级 之 搜索算法 之 广度优先算法BFS (POJ 3278+1426+3126+3087+3414)

    BFS算法与树的层次遍历很像,具有明显的层次性,一般都是使用队列来实现的!!! 常用步骤: 1.设置访问标记int visited[N],要覆盖所有的可能访问数据个数,这里设置成int而不是bool, ...

  9. POJ 1979 题解

    Red and Black Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 31722   Accepted: 17298 D ...

  10. bzoj1103树状数组水题

    (卧槽,居然规定了修改的两点直接相连,亏我想半天) 非常水的题,用dfs序(而且不用重复,应该是直接规模为n的dfs序)+树状数组可以轻松水 收获:树状数组一遍A(没啥好骄傲的,那么简单的东西) #i ...