public class CookieDemo extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.创建cookie对象
Cookie c = new Cookie("msg","hello");
//2.发送cookie
resp.addCookie(c);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}
public class CookieDemo2 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//3.获取Cookie对象
Cookie[] cookies = req.getCookies();
//获取数据,遍历Cookie
if (cookies != null){
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);
}
}
public class CookieDemo3 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.创建多cookie对象
Cookie c1 = new Cookie("msg","hello");
Cookie c2 = new Cookie("name","zhangsan");
//2.发送多个cookie
resp.addCookie(c1);
resp.addCookie(c2);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}
public class CookieDemo4 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.创建cookie对象
Cookie c1 = new Cookie("msg","setMaxAge");
//2.设置Cookie的存活时间
c1.setMaxAge(30);//将cookie持久化到硬盘30秒,30秒后会自动删除文件
//3.发送cookie
resp.addCookie(c1);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}
public class CookieDemo5 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.创建cookie对象
Cookie c1 = new Cookie("msg","setMaxAge");
//2.设置Cookie的存活时间
c1.setMaxAge(30);//将cookie持久化到硬盘30秒,30秒后会自动删除文件
//3.设置cookie的共享范围
c1.setPath("/"); //根路径("/"),项目("/project")
//4.不同的服务器之间共享问题
c1.setDomain(".baidu.com"); //如果设置一级域名相同,那么多个服务器之间cookie可以共享
//setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享
//3.发送cookie
resp.addCookie(c1);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}
/**
* 在服务器中的Servlet判断是否有一个名为lastTime的cookie
* 1.有:不是第一次访问
* -响应数据:欢迎回来,您上次访问时间为:***
* -写回Cookie: lastTime=*****
* 2.没有,是第一次访问
* -响应数据:您好欢迎您首次访问
* -写回Cookie:lastTime=****
*/
public class cookieTest extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应的的数据格式编码
resp.setContentType("text/html;charset=utf-8");
//1.获取所有Cookie判断名称是否为lastTime
Cookie[] cookies = req.getCookies();
boolean flag = false;
//2.遍历Cookie数组
if (cookies != null && cookies.length > 0) {
for (Cookie cookie : cookies) {
//3.获取cookie名称
String name = cookie.getName();
//4.判断名称是否是lastTime
if ("lastTime".equals(name)) {
flag = true;
//5.有该cookie则不是第一次访问
//6.设置响应数据,设置cookie 的value
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
//URL编码去掉空格
str_date = URLEncoder.encode(str_date, "utf-8");
cookie.setValue(str_date);
//设置cookie存活期为一个月
cookie.setMaxAge(60 * 60 * 24 * 30);
//获取当前时间字符串后,重新发送cookie
String value = cookie.getValue();
//URL解码
value = URLDecoder.decode(value,"utf-8");
resp.getWriter().write("<h1>欢迎回来,您上次访问的时间为:" + value + "</h1>");
resp.addCookie(cookie);
}
}
}
if (cookies == null || cookies.length == 0 || !flag) {
//如果没有cookie那么这是第一次访问
//1.响应数据,设置cookie的value
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
//URL编码去掉空格
str_date = URLEncoder.encode(str_date, "utf-8");
//新建Cookie将k,v传入
Cookie cookie = new Cookie("lastTime", str_date);
//设置cookie存活时间为一个月
cookie.setMaxAge(60 * 60 * 24 * 30);
//获取字符串,重新发送cookie
resp.addCookie(cookie);
//获取当前时间字符串后,重新发送cookie
String value = cookie.getValue();
//URL解码
value = URLDecoder.decode(value,"utf-8");
resp.getWriter().write("<h1>您好,欢迎您首次访问</h1>");
}
}
}