Cookie是什么?
Cookie是一种用于在客户端和服务器之间传递数据的机制.可以理解为 由服务器创建保存在浏览器上的一些列键值对集合。
Cookie的常用方法:
1.创建Cookie
Cookie对象需要一个名称和一个值作为参数。
Cookie cookie = new Cookie("cookieName","cookievalue");
2.设置Cookie
设置cookie的最大存活时间:
cookie.setMaxAge(3600); // 设置过期时间为1小时
3.从请求中获取Cookie:可以使用HttpServletRequest
对象的getCookies()
方法获取请求中的所有Cookie。
Cookie[] cookies = request.getCookies();
4.使用Cookie值:可以通过Cookie
对象的getValue()
方法获取Cookie的值。
String cookieValue = cookie.getValue();
5.发送Cookie到客户端:为了将Cookie发送给客户端,需要使用HttpServletResponse
对象的addCookie()
方法。
response.addCookie(cookie);
6.删除Cookie:要删除Cookie,可以创建一个具有相同名称的Cookie,并将其maxAge设置为0,然后将其发送给客户端。
Cookie cookie = new Cookie("cookieName", ""); cookie.setMaxAge(0); response.addCookie(cookie);
一般的流程:
1.服务器端创建Cookie后,可以设置设置Cookie的有效时间,然后添加到reponse响应中将数据响应给客户端然后保存在服务器中
Cookie cookie = new Cookie("username","admin"); cookie.setMaxAge(3600); // 设置过期时间为1小时 reponse.addCookie(cookie);
2.要获取存在客户端的Cookie,客户端向服务器发起请求,都会将cookie数据带回给服务器。
Cookie cooks[] = request.getCookies();
Cookie的特点:
1.安全性低
2.通过key-value键值对形式存在客户端(浏览器).
Cookie的应用:
1.记住登录转态,优化登录过程.
2.用户偏好设置:网站可以使用Cookie来存储用户的偏好设置,例如显示语言、主题选择、字体大小等。每当用户访问网站时,服务器可以通过读取Cookie来提供定制化的用户体验。
Session
主要类是HttpSession
主要的方法:
1.HttpSession获取
HttpSession session = request.getSession();
2.保存数据
session.setAttribute(key,value)
3.获取数据
session.getAttribute(key)
3.删除数据
session.removeAttribute(key)
会话的概念:
会话是指一个终端用户与交互系统进行通讯的过程. 例如:从进入某个Web应用到退出系统或者关闭浏览器的过程即一次会话。
Servlet域对象 -ServletContext : 整个应用运行过程中 -HttpSession: 会话开始到结束 -HttpServletRequest: 一次请求开始到请求结束 域对象方法: -setAttribute(String key,Object value) -removeAttribute(String key) -getAttribute(String key) 应用: -登录后用户信息的共享
Session的原理:
1.客户端向服务器发起请求,请求中的Cookie保存JSSIONID 2.在服务器中根据SESSONID查询Hashtable,如果没有查询到 对应的Session对象,说明会话刚刚开始,则创建Session对象。 并且保存在Hashtable中。 如果有相应SessionID的Session对象则返回。 3.如果是一个新建的SESSION对象,则会将sessionid存入cookie, 响应客户端后,保存在客户端。
Cookie与Session的区别:
1.Session存在服务器端,Cookie存在客户端。 2.Session存储Object类型数据,Cookie存储String类型数据。 3.Session是安全的,Cookie是不安全。 4.Session会话结束即销毁数据 cookie可以长期保存在客户端