首先
我们要了解一下什么是会话
会话:打开浏览器,进行网页的访问,在关闭浏览器,这个过程称作一次会话。
而***Cookie与Session就是保存会话的两种技术***。
Cookie
1.什么是Cookie
简而言之,当浏览器向服务器发起请求,如果服务器需要记录该状态,服务器就会向浏览器颁发一个Cookie。浏览器会把Cookie保存在本地。当浏览器再请求该服务器时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认浏览器状态。
2.常用方法
建立或者设置Cookie的一些属性需要用到
3.Cookie的细节问题
a.一个Cookie只能保存一个信息。
b.一个web网站可以给浏览器发送多个cookie,最多村脏20个Cookie
c.cookie大小有限制,4kb
d.浏览器上限为300个Cookie
4.如何删除Cookie
a.不设置有限期,关闭浏览器自动失效
b.设置有效期为0( cookie.setMaxAge(0) )
Session
1.什么是Session
a.服务器会给每一个用户(客户端)创建一个Session对象
b.一个Session对象独占一个浏览器,只要浏览器没有关闭,这个Session就存在
c.用户登录之后,整个网站它都可以访问→保存用户信息,购物车的信息等
2.Session的使用场景
a.将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中。
b.保存一个登录用户的信息
c.购物车信息
d.整个网站中经常会使用到的数据
3.Session的使用
a.创建过程如下
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//解决乱码问题
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
//得到Session
HttpSession session = request.getSession();
//给Session存东西
session.setAttribute("LoginName",new Person("张三",22));
//获取SessionID
String sessionId = session.getId();
//判断Session是否是新创建的
if (session.isNew()){
response.getWriter().write("这个Session是新创建的,ID;"+sessionId);
}else {
response.getWriter().write("这个Session已经存在,ID;"+sessionId);
}
}
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
b.注销
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
//移除Session
session.removeAttribute("LoginName");
//使该session无效,手动注销session
session.invalidate();
}
c.设置Session的有效时间
Session与Cookie的区别
首先看图释
Cookie
Session
1.Cookie是把用户的数据写给用户的浏览器,浏览器(客户端)可以保存
2.Session把用户的数据写到独占的Session中,服务器端保存(保存重要的信息,简绍服务器资源的浪费)
3.Session对象由服务器创建