四、Cookie && Session
会话概述
会话基本概念
-
日常生活中:从拨通电话到挂断电话之间的一连串你问我答的过程就是一个会话
-
B/S架构中:从浏览器第一次给服务器发送请求时,建立会话;直到有一方断开,会话结束
-
一次会话:包含多次请求响应
会话技术
-
问题:Http是一个无状态协议,同一个会话的连续两个请求相互独立,彼此并不了解
-
作用:用于存储浏览器与服务器在请求和响应过程中产生的数据
-
客户端会话技术:cookie
-
服务器端会话技术:session
Cookie【重点】
概述
-
Cookie作用:在一次会话的多次请求之间共享数据,将数据保存到客户端(浏览器)
-
jd购物车
快速入门
-
案例
-
cookie相关方法
1. 设置数据到cookie中 // 1.创建cookie对象,设置数据 *value只能存字符串 Cookie cookie = new Cookie(String name,String value); // 2.通过response,响应(返回)cookie response.addCookie(cookie); 2. 从cookie中获取数据 // 1.通过request对象,接收cookie数组 Cookie[] cookies = request.getCookies(); // 2.遍历数组
-
代码演示
- SetServlet
package com.lagou.servlet; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; public class SetServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 1. 创建cookie对象,设置数据 String encodevalue = URLEncoder.encode("杰克 ", "UTF-8"); Cookie cookie1 = new Cookie("name", encodevalue); Cookie cookie2 = new Cookie("age", "18"); // 2. 通过response对象响应cookie resp.addCookie(cookie1); resp.addCookie(cookie2); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
- GetServlet
package com.lagou.servlet; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest;