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.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;
public class CookieDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置请求和响应编码
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
//定义响应的类型是文本或者html
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();//获得响应流
Cookie[] cookies = req.getCookies();//在用户请求那里获得cookie;
/*注意:cookie是从用户那里得到的,
并且cookie返回的是一个数组,说明cookie可能不止一个
*/
//判断cookie是否为空
if(cookies!=null){
out.write("欢迎进入本站");//如果不为空就遍历cookie
for (int i = 0; i < cookies.length; i++) {//遍历cookies
Cookie cookie = cookies[i];//获取到cookie中的第i个
if(cookie.getName().equals("lastLoginTime")){
out.write("你上一次访问本站的时间TIME:");
//如果从用户那里得到的cookie中包含上一次访问的时间的cookie,那么就输出
//获取到key为lastLoginTime的value
String lastLoginTime = cookie.getValue();
long l = Long.parseLong(lastLoginTime);
out.write(new Date(l).toLocaleString());
}
}
}else {
out.write("这是你第一次访问本站");
//如果用户那里没有cookie
}
//新建一个cookie,里面存放的访问时间
Cookie timeCookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
timeCookie.setMaxAge(24*60*60);
//如果浏览器关闭,那么cookie也就随之失效,
// 这里我们可以设置cookie的有效期为一天
resp.addCookie(timeCookie);//响应中添加这个cookie给用户
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
想让cookie失效的方法:
- 1、不设置有效期,关闭浏览器cookie就自动失效了
- 2、在另一个servlet对象中创建一个cookie和想要失效的cookie同名(一定要一样),这样在访问另一个servlet对象时就会覆盖掉之前的cookie,并把这个新创建的cookie有效期设为0,这样cookie就会立刻失效
- 比如我新建一个CookieDemo02
public class CookieDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie timeCookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
timeCookie.setMaxAge(0);//cookie失效
resp.addCookie(timeCookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
在访问第二个servlet时,cookie立刻失效