Cookie案例分析、Cookie案例代码实现
Cookie案例分析
案例:记住上一次访问的时间
需求:
访问一个Servlet,如果第一次方法,则提示:您好,欢迎您首次访问
如果不是第一次访问,则提示:欢迎回来,您上次访问的时间:显示时间字符串
分析:
可以采用Coolie来完成
在服务器中的Servlet判断是否一个名为lastTime的Cookie
有:不是第一次访问
没有:不是第一次访问
响应数据:你好,欢迎你首次访问
写回Cookie:lastTime=2022年8月16日 13:59:34
Cookie案例代码实现
案例:
@WebServlet( value = "/CookieTest")
/**
* 可以采用Coolie来完成
* 在服务器中的Servlet判断是否一个名为lastTime的Cookie
* 有:不是第一次访问
* 没有:不是第一次访问
*/
public class CookieTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置响应的消息体的数据格式以及编码
response.setContentType("text/html;charse=utf-8");
// 获取所有Coolie
Cookie[] cookies = request.getCookies();
boolean fag =false;
// 遍历cookie数组
if (cookies != null && cookies.length >0) {
for (Cookie cookie : cookies) {
// 设置Cookie的vlaues
// 获取当前时间的字符串,重新设置cookie的值,重新发送cookie
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = format.format(date);
System.out.println("编码前的"+s);
s = URLEncoder.encode(s,"utf-8");
System.out.println("编码后"+s);
cookie.setValue(s);
response.addCookie(cookie);
//设置cooklie存活时间
cookie.setMaxAge(60*60*24*30);
response.addCookie(cookie);
// 获取cookie名称
String name = cookie.getName();
if ("lastTime".equals(name)){
fag = true;
// 有该cookie,不是第一次访问
String value = cookie.getValue();
response.getWriter().write("<h1>欢迎回来,您上次访问的时间是"+value+"</h1>");
}
break;
}
}
if (cookies == null || cookies.length == 0 ||fag==false){
// 没有
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = format.format(date);
Cookie cookie = new Cookie("lastTime",s);
//设置cooklie存活时间
cookie.setMaxAge(60*60*24*30);
response.addCookie(cookie);
response.getWriter().write("<h1>欢迎第一次访问<h1>");
}
}
}