javaweb的基础练习
先介绍Cookie对象主要用到的方法!
getCookies() 用request来获取Cookie,返回的是一个Cookie数组,也就是所有的cookie的值
Cookie[] cookies = req.getCookies();
getName() 获取到cookie数组,就能获取数组里面的cookie名字
String name = cookie.getName();
getValue() 获取数组里面的cookie的值
String value = cookie.getValue();
代码:
@WebServlet("/cookieTest")
public class CookieTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应的消息体的数据格式以及编码
resp.setContentType("text/html;charset=utf-8");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//1.获取所有Cookie
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)){
//有该Cookie,不是第一次访问
flag = true;
//响应数据
//获取Cookie的value,时间
String value = cookie.getValue();
//把字符串转换long类型,再转日期类型,然后格式化时间
long l = Long.parseLong(value);
String time = sdf.format(new Date(l));
resp.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+time+"</h1>");
//设置Cookie的value
//获取当前时间的字符串,重新设置Cookie的值,重新发送cookie
long millis = System.currentTimeMillis();
cookie.setValue(millis+"");
//设置cookie的存活时间
cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
//相应到Cookie
resp.addCookie(cookie);
break;
}
}
}
if(flag == false){
//没有,第一次访问
//设置Cookie的value
//获取当前时间的字符串,重新设置Cookie的值,重新发送cookie
long timeMillis = System.currentTimeMillis();
Cookie c = new Cookie("lastTime",timeMillis+"");
//设置cookie的存活时间
c.setMaxAge(60 * 60 * 24 * 30);//一个月
resp.addCookie(c);
resp.getWriter().write("<h1>hello,欢迎首次访问</h1>");
}
}
效果:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL4lERNNzaE9EeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1kTNwQTMwADM5ADNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
再次刷新之后
怎么清除cookie??
按F12 进入开发者模式
找到application > Cookies ,右键可以清除cookie了