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. Flex Layout Attribute

    GitHub: https://github.com/StefanKovac/flex-layout-attribute 引入基本的样式,可以更好的布局,可以在线制作: http://progress ...

  2. SQL参数化查询自动生成SqlParameter列表

    string sql = @"INSERT INTO stu VALUES (@id,@name) "; 参数化查询是经常用到的,它可以有效防止SQL注入.但是需要手动去匹配参数@ ...

  3. z-stack协议uart分析(DMA)

    1.从ZMain里面的main函数开始分析 2.进入int main( void ); HalDriverInit();   //硬件相关初始化,有DMA初始化和UART初始化 3.进入HalDriv ...

  4. Linux 操作mysql数据库 创建库 导入、删除表

    确保线上的运行数据库是不可避免的本人小白,因公司上线没有办法自己去整服务器,深刻体会到服务器大神的霸气,所以为了增加记忆,服务广大员友记录一下 linux mysql 忘记root的密码无法登陆进my ...

  5. 用Barcode生成条形码图片

    使用第三方类库:BarcodeLib.dll private BitmapImage GenerateBarcodeBitmap(string visitId) { BarcodeLib.Barcod ...

  6. 闲来无事,写个基于TCP协议的Socket通讯Demo

    .Net Socket通讯可以使用Socket类,也可以使用 TcpClient. TcpListener 和 UdpClient类.我这里使用的是Socket类,Tcp协议. 程序很简单,一个命令行 ...

  7. BZOJ4293: [PA2015]Siano

    Description 农夫Byteasar买了一片n亩的土地,他要在这上面种草. 他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘米. Byteasar一共会进行m ...

  8. VS2015 调试时 编辑并继续不可用

    最近在项目中遇到一次调试时 编辑并继续不可用.结合网上说的工具->设置->调试->常规下的一些操作,到后来还是不可用,最后把项目的解决方案平台改成Mixed Platform ,之后 ...

  9. Linux 环境变量 设置 etc profile

    一.Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1.永久的:需要修改配置文件,变量永久生效. 2.临时的:使用export命令声明即可,变量在关闭shell时失效. 二. ...

  10. Apache多站点配置及启动失败解决办法

    一. Apache多站点配置方法 1.打开Apache安装目录下conf/httpd.conf文件,找到下面两行文字,把最前面的 # 号去掉,然后保存. #LoadModule vhost_alias ...