前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javaweb之每次访问的时候都在浏览器上返回上次访问的时间,原码

javaweb之每次访问的时候都在浏览器上返回上次访问的时间,原码

作者头像
全栈程序员站长
发布2022-09-08 12:50:46
3960
发布2022-09-08 12:50:46
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

需求:第一次访问的时候返回一个welcome,第二次访问及以后则返回上一次的访问时间

首先做一个工具类,这个类的功能是找到特定名字的cookie,当然你也可以用工具类,直接将这个方法写在原码的下面直接应用,但是这个工具类还是比较有用的,很多时候都会用到,所以把它封装成了一个工具类。

代码语言:javascript
复制
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;
		}
	}

}

下面是原码,注释中写了具体的解释:

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档