目录
简介
会话:
会话跟踪:
实现方式:
Cookie基本使用
Cookie基本使用
发送Cookie
1、创建Cookie对象,设置数据
Cookie cookie=new Cookie("key","value");
2、发送Cookie到客户端:使用response对象
response.addCookie(cookie);
1、在src下创建一个com包下CookieServlet类
package com;
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;
public class CookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//发送Cookie
//创建Cookie对象
Cookie cookie=new Cookie("username", "zhangsan");
//2、Cookie,response
resp.addCookie(cookie);
}
}
2、web.xml配置
<servlet>
<servlet-name>CookieServlet</servlet-name>
<servlet-class>com.CookieServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CookieServlet</servlet-name>
<url-pattern>/cookieServlet</url-pattern>
</servlet-mapping>
启动访问即可,f12查看
获取Cookie
Cookie[] cookie=request.getCookie();
cookie.getName();
cookie.getValue();
创建CookieServlet1类,再配置web.xml
package com;
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;
public class CookieServlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//3、获取cookie数组
Cookie[] cookies=req.getCookies();
//4、遍历数组
for( Cookie cookie1:cookies){
//5、获取数据
String name=cookie1.getName();
String value=cookie1.getValue();
System.out.println("name="+name+"
value="+value);
System.out.println("-------------");
}
}
}
先访问cookieServlet,在访问cookieServlet1得
Cookie原理
Cookie的实现是基于HTTP协议的
响应头:set-cookie
请求头:cookie
访问时f12查看网络
Cookie使用细节
cookie存活时间
默认情况下,cookie存储在浏览器内存中,当浏览器关闭,内存释放,则cookie被销毁
setMaxAge(int seconds):设置Cookie存活时间
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//发送Cookie
//创建Cookie对象
Cookie cookie=new Cookie("username", "zhangsan");
//设置存活时间 比如一周
cookie.setMaxAge(60*60*24*7);
//2、Cookie,response
resp.addCookie(cookie);
}
Cookie存储中文
默认情况不支持中文:
CookieServlet类下
public class CookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//发送Cookie
//创建Cookie对象
String value="张三";
//URL编码
value= URLEncoder.encode(value, "UTF-8");
Cookie cookie=new Cookie("username", value);
//设置存活时间 比如一周
cookie.setMaxAge(60*60*24*7);
//2、Cookie,response
resp.addCookie(cookie);
}
}
CookieServlet1类下
public class CookieServlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//3、获取cookie数组
Cookie[] cookies=req.getCookies();
//4、遍历数组
for( Cookie cookie1:cookies){
//5、获取数据
String name=cookie1.getName();
String value=cookie1.getValue();
//URL解码
value=URLDecoder.decode(value,"UTF-8" );
System.out.println("name="+name+"
value="+value);
System.out.println("-------------");
}
}
}