web前端笔记:案例 :记录上次访问时间
需求.访问一个Servlet ,如果是第一次访问,则提示 你好欢迎首次访问。 2.如果不是第一次访问,则提示:欢迎回来,你上次的访问时间为:显示时间字符串。 需求分析: 1.可以采用Cookie 来完成。 2.在服务器中Servlet 判断是否有一个lasttime 的Cookie. 2.1如果有则 表示不是第一次访问返回上次访问时间。 2.2.没有: 是首次访问。 1.响应:你好,你上次的访..
·
需求
.访问一个Servlet ,如果是第一次访问,则提示 你好欢迎首次访问。 2.如果不是第一次访问,则提示:欢迎回来,你上次的访问时间为:显示时间字符串。 需求分析: 1.可以采用Cookie 来完成。 2.在服务器中Servlet 判断是否有一个lasttime 的Cookie. 2.1如果有则 表示不是第一次访问返回上次访问时间。 2.2.没有: 是首次访问。 1.响应:你好,你上次的访问时间为。。。。。。 2.写回Cookie lastime 3.日期 的编码 URLEncoder.encode(value,"utf-8") 日期解码 URLDecoder.decode(value,"utf-8")
```
//第一次访问操作
// 1 获取用户当前访问的时间
Date date = new Date();
// 2 格式化时间数据(时间转换成含有非法字符形式)
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 ;,= hh时mm分ss秒");
String format1 = format.format(date);
System.out.println(format1);
// 3 将数据进行编码
String encode = URLEncoder.encode(format1, "utf-8");
// 4 将数据存入cookie
Cookie cookie = new Cookie("time",encode );
cookie.setMaxAge(60*60*24);
// 5 将数据发送给浏览器
response.addCookie(cookie);
```
```
package com.zengjx.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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.net.URLDecoder;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/getTimeServlet")
public class GetTimeServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html ;charset=utf-8");
Cookie[] cookies = request.getCookies();
boolean isNotFirst=false;
if(cookies!=null&& cookies.length!=0){
for (Cookie cookie : cookies) {
System.out.println(" "+cookie.getName()+" "+cookie.getValue());
//获取cookie 是否有 lastime
String name= cookie.getName();
if(name.equals("lasttime")){//上次访问过了
String str_time = URLDecoder.decode(cookie.getValue(),"utf-8");
System.out.println("last ="+str_time);
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy年MM月dd日 hh:MM:ss");
Date date =new Date();
String newTime= simpleDateFormat.format(date);
System.out.println("newTime "+newTime);
// Cookie cookie1 =new Cookie("lasttime",str_time1);
// 不编码 会报错:java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
newTime=URLEncoder.encode(newTime,"utf-8");
cookie.setValue(newTime);
response.addCookie(cookie);
System.out.println("re.......");
isNotFirst=true;
response.getWriter().write("更新时间");
response.getWriter().write("你上次的访问时间"+str_time);
//响应数据
//获取Cookie的value,时间
// String value = cookie.getValue();
// System.out.println("解码前:"+value);
// //URL解码:
// value = URLDecoder.decode(value,"utf-8");
// System.out.println("解码后:"+value);
// response.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+value+"</h1>");
//
//
// Date date = new Date();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// String str_date = sdf.format(date);
// System.out.println("编码前:"+str_date);
// //URL编码
// str_date = URLEncoder.encode(str_date,"utf-8");
// System.out.println("编码后:"+str_date);
// cookie.setValue(str_date);
// //设置cookie的存活时间
// cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
// response.addCookie(cookie);
}
}
}
System.out.println(" flag "+isNotFirst);
if(!isNotFirst){
System.out.println("fist call");
Date date =new Date();
// DateFormat dateFormat = new SimpleDateFormat("yyyy:MM:ddHH:mm:ss");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String stime= dateFormat.format(date);
String str_time= URLEncoder.encode(stime,"utf-8");
Cookie cookie =new Cookie("lasttime",str_time);
response.addCookie(cookie);
//设置有效期
cookie.setMaxAge(3600*20);
response.getWriter().write("首次访问");
System.out.println(" first end ");
}
System.out.println("do post ");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
```
更多推荐
已为社区贡献2条内容
所有评论(0)