Cookie和Session小结
Posted 好多个码农
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie和Session小结相关的知识,希望对你有一定的参考价值。
Cookie小结
-
Cookie:服务器在客户端(浏览器)存储数据的技术;
-
Cookie分类:
-
会话级别:没有设置最大存活时间的cookie,浏览器关闭后消失;
-
持久级别:设置了最大存活时间,浏览器关闭后不会消失;
-
-
Cookie基本API:
-
创建Cookie:Cookie c = new Cookie("name","zhangsan");
-
获取name值:c.getName();
-
获取value值:c.getValue();
-
将cookie响应给浏览器:response.add(c);
-
获取所有的cookie:Cookie[] cookies = request.getCookies();
-
-
Cookie的有效时间:
-
setMaxAge(int seconds):以秒为单位设置cookie的存活时间;
-
-
Cookie的有效路径:
-
setPath(String path):设置cookie的有效路径,在这个路径及其子路径下有效;
-
-
Cookie删除:
-
客户端:
-
会话级别的cookie,关闭浏览器后cookie立即消失;
-
禁用cookie;
-
手动清除cookie;
-
-
服务端:
-
通过Servlet,将原来的cookie置换;
-
-
-
Cookie的优势及弊端:
-
优势:
-
为服务端标识用户提供依据;
-
减轻了服务端数据存储的压力;
-
-
弊端:
-
数据存储在客户端不安全;
-
存储的数据大小受限,一个cookie存储的数据最大为4K;
-
-
Session是什么
Session是服务器为每个访问这个服务器的客户端用户创建的一个容器。这个容器中存储的数据能够在多个request之间实现共享。而且,这个容器只属于当前这个用户。
Session是怎么标识每一个用户的
表面上,我们说Session容器是属于某一个用户。其实在会话过程中,只有客户端(浏览器)和服务器两个角色。所以,Session容器标识的不是用户,而是当前用户正在使用的浏览器。浏览器与服务器交流是通过给服务器发送请求实现的,浏览器的每次请求中如果都有一个相同的标记用来标记session。服务器就能够识别这个用户了。
这个标记叫做JSESSIONID。我们重新演示,cookie的setPath练习,发现服务器启动后,浏览器的每次请求都会携带一个name属性值为"JSESSIONID"的cookie,这个cookie的值在每次请求过程中都是相同的。
Session的作用
-
为每个访问服务器的用户创建一个存储数据的容器;
-
容器中的数据在多个请求之间共享;
Session容器创建
Session容器的创建,调用的方法是:request.getSession()。具体方法如下:
【练习】创建session对象
//获取Session容器对象
HttpSession session = request.getSession();
System.out.println(session);
5、Session常用API
Session常用API包括:往session容器中存储数据,删除数据,获取数据
方法 | 使用示例 | 说明 |
---|---|---|
void setAttribute(String name,Object value) | session.setAttribute("loginUser",user) | 将一个对象与一个名称关联<br />之后存储到session中 |
Object getAttribute( String name) | session.getAttribute("loginUser") | 通过名称获取session<br />中的数据 |
void removeAttribute(String name) | session.removeAttribute("loginUser") | 根据指定名称删除<br />session中的数据 |
String sessionId = session.getId(); | session.getId() | 获取session的id |
Servlet作用域总结
-
ServletContext域:
一个WEB应用(项目)对应一个ServletContext,这个对象中保存的数据正在整个WEB项目中都有效;
-
创建:服务器启动的时候;
-
销毁:服务器关闭或项目移除后;
-
-
HttpSession:
一次会话给客户端(浏览器)创建一个session。这个对象中保存的数据,一次会话(多次请求)内数据有效;
-
创建:服务器第一次调用getSession()的时候;
-
销毁:
-
服务器非正常关闭(正常关闭:Session被序列化);
-
Session过期了:默认存活时间30分钟;
-
手动调用session的invalidate()方法;
-
-
-
HttpServletRequest:
一次请求创建一个request。这个对象中保存的数据,一次请求(请求链)内数据有效;
-
创建:客户端向服务器发送一次请求;
-
销毁:服务器为这次请求做出响应之后,销毁request;
-
【API操作】操作三个作用域对象的API
-
存储数据:setAttribute(name,value);
-
获得数据:getAttribute(name);
-
删除数据:removeAttribute(name);
以上是关于Cookie和Session小结的主要内容,如果未能解决你的问题,请参考以下文章
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段