大家好,又见面了,我是你们的朋友全栈君。
需求:第一次访问的时候返回一个welcome,第二次访问及以后则返回上一次的访问时间
首先做一个工具类,这个类的功能是找到特定名字的cookie,当然你也可以用工具类,直接将这个方法写在原码的下面直接应用,但是这个工具类还是比较有用的,很多时候都会用到,所以把它封装成了一个工具类。
package tools;
import javax.servlet.http.Cookie;
public class Cookiechoose {
public static Cookie CookiegetCookieByName(Cookie[] cookies,String cookieName) {
if(cookies==null) {
return null;
}else {
for(Cookie cookie:cookies) {
if(cookie.getName().equals(cookieName)) {
return cookie;
}
}
return null;
}
}
}
下面是原码,注释中写了具体的解释:
package cn.itcast.servlet;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
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 tools.Cookiechoose;
/**
* Servlet implementation class Time
*/
@WebServlet("/Time")
public class Time extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Time() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//获取所有的cookie,化为一个数组
Cookie[] cookies=request.getCookies();
//通过自己构建的工具类来选出特定名字的cookie,这里设置的名字是last
Cookie cookie=Cookiechoose.CookiegetCookieByName(cookies, "last");
//创建一个date对象,按照Format将其改为字符串
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sDate=sdf.format(date);
//如果获取的为空,则是第一次访问
if(cookie==null) {
//在页面上打上welcome
response.getWriter().print("welcome");
//第一次,所以要创建一个cookie对象,名字起为last,值为当前的时间
Cookie c=new Cookie("last",sDate);
//设置cookie的声明周期,0则是每次回话结束后就消失,60*60则是一小时,里面的单位是秒
c.setMaxAge(60*60);
//将这个cookie返回给客户端浏览器
response.addCookie(c);
}else {
//这里代表第二次访问,获取以前的时间并打印出来
String lasttime=cookie.getValue();
response.getWriter().print("lasttime:"+lasttime+"");
//设置一个新的时间
cookie.setValue(sDate);
cookie.setMaxAge(60*60);
response.addCookie(cookie);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156792.html原文链接:https://javaforall.cn