使用 cookie 简单实现 “第一次访问页面” 和 “显示上次访问时间”
导航栏:
CookieServlet:
package chapter1011;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CookieServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
resp.setContentType("text/html;charset=utf-8");
//1.获取所有cookie
Cookie[] cookies = req.getCookies();
//2.遍历cookie
String lastTime = null;
for(int i = 0;cookies!=null && i<cookies.length;i++) {
//3.获取cookies的名称
String name = cookies[i].getName();
if("lastAccess".equals(name)) {
//获取cookie的时间
lastTime = cookies[i].getValue();
}//if
}//for
//3. 判断是否是首次访问
if(lastTime==null) {
//如果为空,则是第一次访问
resp.getWriter().print("第一次访问本站!");
}//if null
else{
//不为空,不是第一次访问,把上次访问时间写回游览器
resp.getWriter().print("上次访问时间: "+ lastTime);
}//else if null
//第三次、第四次
String time = String.format("%tF %<tT", new Date());
Cookie cookie = new Cookie("lastAccess",time);
resp.addCookie(cookie);
}//doGet
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(req, resp);
}
}
web:
<!-- chapter1011 cookie-->
<servlet>
<servlet-name>s16</servlet-name>
<servlet-class>chapter1011.CookieServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>s16</servlet-name>
<url-pattern>/test16</url-pattern>
</servlet-mapping>
运行结果:
第一次
第二次
注意:Cookie 是默认的cookie
特点是:浏览器关闭 cookie失效 即不会显示上次访问时间
解决:加上这段代码,表示这个cookie会被保存24h(60s*60*24),需要其他时间的话自己配置