# 学习内容 :
1. 会话技术 :
(1. Cookie
(2. Session
2. JSP :入门学习
## 会话技术 :
1. 会话 :一次会话中包含多次请求和响应。
* 一次会话: 浏览器第一次给服务器资源发送请求,会话建立,直到一方断开为止。
2. 功能 : 再一次会话的范围内的多次请求间,共享数据
3. 方式 :
(1. 客户端会话技术 :Cookie
(2. 服务器端会话技术 :Session
## Cookie:
1. 概念 :客户端会话技术,将数据保存到客户端
2. 快速入门 :
* 使用步骤 :
(1. 创建Cookie对象,绑定数据
* new Cookie(String name,String value)
(2. 发送Cookie对象
* response.addCookie(Cookie,cookie)
(3. 获取Cookie,拿到数据
* request.getCookie()
package com.zhulin.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author Janson
* @version 1.0
* @date 2019/10/15 20:51
*/
/**
* Cookie快速入门
*/
@WebServlet("/cookieDemo1")
public class CookieDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.创建Cookie对象
Cookie cookie = new Cookie("msg", "hello");
//2.发送Cookie
response.addCookie(cookie);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
package com.zhulin.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
/**
* @author Janson
* @version 1.0
* @date 2019/10/15 20:51
*/
/**
* Cookie快速入门
*/
@WebServlet("/cookieDemo2")
public class CookieDemo2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//3.获取Cookie
Cookie[] cs = request.getCookies();
//4.获取数据,遍历Cookie
if (cs != null){
for (Cookie c : cs) {
String name = c.getName();
String value = c.getValue();
System.out.println(name + ":"+value);
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
3. 实现原理 :
* 基于响应头set-cookie 和请求头 cookie 实现
4. Cookie 的细节
(1. 一次可不可以发送多个cookie?
* 可以
* 可以调用多个Cookie对象,使用response调用多次addCookie方法发送cookie即可
(2. Cookie在浏览器中保存多长时间?
a. 默认情况下,当浏览器关闭后,Cookie数据被销毁
b. 持久化存储 :
* setMaxAge(int second)
# int型数据的三种形式
(1. 正数 :将Cookie数据写到硬盘文件中,持久化存储。Cookie的存活时间
(2. 负数 :默认值
(3. 零 :代表删除Cookie信息
(3. Cookie能不能存中文?
* tomcat 8 之前,Cookie不能存储中文数据
-----需要将中文数据转码--- 一般采用URL编码(%E3)
* tomcat 8 之后,Cookie支持中文数据。对于一些特殊的字符,依旧需要URL编码
URL编码和节码代码展示 :
URLEncoder.encoder(String s,String enc)
//编码字符串,编码格式
//使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。
URLDecoder.decoder(String s,String enc)
//使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。
(4. Cookie共享问题?
a. 假设在一个tomcat服务器中部署了多个web项目,那么这些web项目中的Cookie能不能共享?
# 默认情况下不能共享
* setPath(String path) : 设置cookie的获取范围。默认情况下,会去设置当前的虚拟目录
a. 如果要共享,则可以将path设置为“/”,
b. 不同tomcat服务器间Cookie的共享问题
* setDomain(String path) : 如果一级域名相同,那么多个服务器之间cookie可以共享
* setDomain(".baidu.com") , 那么teiba.baidu.com 和 news.baidu,com可以共享
package com.zhulin.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author Janson
* @version 1.0
* @date 2019/10/15 20:51
*/
/**
* Cookie快速入门
*/
@WebServlet("/cookieDemo5")
public class CookieDemo5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.创建Cookie对象
Cookie cookie = new Cookie("msg", "你好");
//设置Cookie的存活shij
// cookie.setMaxAge(30);
//cookie.setMaxAge(-1);
//设置path,让当前服务器下部署的所有项目共享Cookie信息
cookie.setPath("/");
//2.发送Cookie
response.addCookie(cookie);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
5. Cookie的特点和作用 :
(1. Cookie存储数据在客户端浏览器
(2. 浏览器对于单个Cookie 的大小有限制(4kb)以及 对于同一个域名下的总Cookie数量也有限制(20)
* 作用 :
(1. Cookie一般用于存储少量的不太敏感的数据
(2. 在不登录的情况下,完成服务器对客户端的身份识别

被折叠的 条评论
为什么被折叠?



