本人在javaweb中实现了一个显示上次登录时间,但是输出的时间总是不能转换成我们常用的时间格式。
我的输出是:您上次访问的时间是:d8f16178-792b-43ca-bb5d-03b1f50f8c0b
代码为:
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.text.SimpleDateFormat;
import java.util.Date;
@WebServlet("/CookieLasttime")
public class CookieLasttime extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//指定服务器输出内容的编码方式为utf-8,防止乱码
resp.setContentType("text/html;charset=utf-8");
String lastaccesstime=null;
//获取所有cookie,并将这些cookie存放在数组中
Cookie[] cookies=req.getCookies();
//遍历获取cookie数组
for (int i = 0;cookies!=null&& i < cookies.length;) {
lastaccesstime=cookies[i].getValue();
break;
}
//判断是否存在名为lastaccesstime的cookie值
if(lastaccesstime==null) {
resp.getWriter().println("您是首次访问本站!!");
}else {
resp.getWriter().println("您上次访问的时间是:"+lastaccesstime);
}
resp.getWriter().println(lastaccesstime);
System.out.println(lastaccesstime);
//获取cookie信息并将当前时间作为cookie值发送给客户端
String currenttime= new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss").format(new Date());
Cookie cookie=new Cookie("lastaccess",currenttime);
resp.addCookie(cookie);
}
@Override
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
遍历获取cookie数组处有问题,你并没有声明获取key为lastaccess的元素,可以改为:
//遍历获取cookie数组
for (Cookie cookie : cookies) {
if ("lastaccess".equals(cookie.getName())) {
lastaccesstime = cookie.getValue();
break;
}
}
非常感谢