Java-cookies会话技术
- 一、会话技术相关概念
- 二、Cookie会话技术
- 2.1 Cookie会话技术实现步骤
- 2.2 实现原理
- 2.3 注意事项
- 2.4 cookie作用与特点
一、会话技术相关概念
会话技术:
1.会话:一次会话中包含多次请求和响应。即浏览器给服务器发送一次请求后,会话建立,直到一方断开为止。
2.分类:
客户端会话技术:Cookie
服务器端会话技术:Session
3.功能:在一次会话的范围里的多次请求间,共享数据。
二、Cookie会话技术
2.1 Cookie会话技术实现步骤
Cookie会话技术:将数据保存到客户端。
使用步骤:
1.创建Cookie对象,传入响应数据
new Cookie(String name,String value)
2.发送Cookie对象
reponse.addCookie(Cookie cookie)
3.获取Cookie对象,拿到数据
request.Cookie[] getCookies()
@WebServlet("/cookieDemo01")
public class CookieDemo01 extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1.创建Cookie对象,传入响应数据
Cookie cook = new Cookie("name","tom");
//2.发送Cookie对象
resp.addCookie(cook);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
@WebServlet("/cookieDemo02")
public class CookieDemo02 extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 3.获取Cookie对象,拿到数据
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
System.out.println(name+" "+value);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
2.2 实现原理
实现原理:
1.由客户端浏览器第一次请求数据,服务器端通过set-cookie:name tom,进行数据响应。
2.浏览器请求头会带着cookie:name tom信息去再次请求服务器,服务器来获取cookie对象。
2.3 注意事项
注意事项:
1.可以一次性发送多个cookie。
*创建多个cookie对象,使用response调用多次addCookie方法即可
2.cookie对象在浏览器的生存时间可以进行人为设定
1.默认情况下,浏览器关闭,Cookie数据被销毁
2.可以通过setMaxAge()持久化存储:
setMaxAge(int seconds)方法
*seconds为正数:即将cookie写入到硬盘持久化存储,seconds为生存时间,在时间到seconds后,自动删除
*seconds为负数:默认值,浏览器关闭,cookie数据即被销毁
*seconds为0:删除cookies数据
3.cookie存中文:
*在tomcat8之前,存中文需要直接将中文数据进行转码,一般采用URL编码(%E3)
*在tomcat8之后,cookie支持中文数据,但还是不支持特殊字符,可以使用URL进行编码,也可以使用URL进行解码
4.cookie共享资源:
1.在同一个tomcat服务器,部署的不同web项目,默认情况下cookie不能共享
如果想要共享,则可以通过setPath(String path)将path设置为"/"
*setPath(String path):针对的是不同的项目之间,设置cookie的获取范围,默认情况下,设置当前的虚拟目录
2.在不同的tomcat服务器间,可以通过方法setDomain(String path)设置一级域名相同,多个服务器之间cookie可以共享
2.4 cookie作用与特点
cookie的作用和特点:
1.特点:
*cookie数据存储在客户端浏览器。
*浏览器对于单个cookie大小有限制(4kb),对于同一个域名下的总的cookie数量也有限制,不同的浏览器规则不太一样。
2.作用:
*cookie可以用来存储少量的不太需要保证安全的数据。
*在不登录的情况下,完成服务器对客户端的身份识别。