Cookie
来源:互联网 发布:软件内测报告 编辑:程序博客网 时间:2024/06/03 17:40
一、会话跟踪机制(session与cookie)
Session:Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。
Cookie:Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否是合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。
区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
二、Cookie机制
1.为什么要使用Cookie?
网站为了辨别用户身份而储存在用户电脑上的数据。可以让用户不用二次输入就直接登录,也可以让用户看到之前的一些记录。
2.Cookie实现原理?
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
3.Cookie具体使用场景?
1.账号自动登录 2. 最近浏览(购物足迹)
三、cookie的常用方法
四、经典示例
示例一(自动登录):
login.jsp页
<h1>登陆页面</h1>
<form action="index.jsp" method="post">
用户名:<input type="text" name="uname"><br/>
密码:<input type="password" name="upass"><br/>
用户名:<input type="submit" value="登陆"><br/>
</form>
index.jsp页面<%//获取用户名和密码 String uname=request.getParameter("uname"); String upass=request.getParameter("upass"); //判断用户名密码是否正确 if("admin".equals(uname)&&"123456".equals(upass)){ //如果正确则保存进cookie Cookie cookieName=new Cookie("uname",uname); Cookie cookiePass=new Cookie("upass",upass); //设置时间 cookieName.setMaxAge(30); cookiePass.setMaxAge(30); //添加 response.addCookie(cookieName); response.addCookie(cookiePass); }else{ //再次进来 Cookie cookies[]=request.getCookies(); if(cookies!=null&&cookies.length>0){ for(Cookie c:cookies){ if("uname".equals(c.getName())){ uname=c.getValue(); } if("upass".equals(c.getName())){ upass=c.getValue(); } } } } if("admin".equals(uname)&&"123456".equals(upass)){ //则打印信息 out.println("你好"+uname); }else{ response.sendRedirect("login.jsp"); }%>示例二(浏览足迹)(需要设置session为false不可用):
test1.jsp
<body><h1>展示页面</h1><a href="test2.jsp?name=a">a</a><br/><a href="test2.jsp?name=b">b</a><br/><a href="test2.jsp?name=c">c</a><br/><a href="test2.jsp?name=d">d</a><br/><a href="test2.jsp?name=e">e</a><br/><a href="test2.jsp?name=f">f</a><br/><a href="test2.jsp?name=g">g</a><br/><pre></pre><h2>最近浏览</h2><% Cookie cookies[]=request.getCookies(); if(cookies!=null&&cookies.length>0){ for(Cookie c:cookies){ out.println(c.getValue()+"<br/>"); } }%>test2.jsp
<h1>详细页面</h1>商品名:<%=request.getParameter("name")%><a href="test1.jsp">返回展示页面</a><% String title=request.getParameter("name"); Cookie cookie=new Cookie("name"+title,title); response.addCookie(cookie);%>
0 0
- Cookie
- cookie
- cookie
- Cookie
- cookie
- Cookie
- cookie
- Cookie
- Cookie
- Cookie
- cookie
- cookie
- cookie
- Cookie
- cookie
- Cookie
- cookie
- cookie
- 2017/3/10 JQuery 淡出、 动画、显示/隐藏切换等效果
- 对称加密算法DES
- egret Scroller 隐藏滑动条
- 【机器学习】手推EM算法
- Oracle修改表空间大小
- Cookie
- 将文字生成png图片
- Handler消息机制
- GestureDetector中onFling()与onScroll()的区别
- 懒惰加载
- 对称加密算法3DES
- 文件上传
- MyISAM转innoDB 出现的一个小问题
- CALayer 的属性分析(几何及图层关系属性)