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可以用来存储少量的不太需要保证安全的数据。
 *在不登录的情况下,完成服务器对客户端的身份识别。