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

javaweb之每次访问的时候都在浏览器上返回上次访问的时间,原码需求:第一次访问的时候返回一个welcome,第二次访问及以后则返回上一次的访问时间首先做一个工具类,这个类的功能是找到特定名字的cookie,当然你也可以用工具类,直接将这个方法写在原码的下面直接应用,但是这个工具类还是比较有用的,很多时候都会用到,所以把它封装成了一个工具类。packagetools;importjavax.servlet.http.Cookie;publ…

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

需求:第一次访问的时候返回一个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.net/156792.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月8日 下午9:46
下一篇 2022年7月8日 下午9:46


相关推荐

  • bt3 u盘版安装教程_bt3下载中文版下载

    bt3 u盘版安装教程_bt3下载中文版下载安装bt3u盘版在我们生活中非常常见,使用简单、方便,为了安装bt3u盘版,今天推荐给大家的安装bt3u盘版,操作简单,适用于绝大部分用户使用bt3u盘版下载准备工具Bt3程序U盘电脑第一步首先格式化U盘,选择FAT32方式。打开下载好的文件,将下图圈内的两个文件拷贝到U盘bt3u盘安装电脑图解-1点击【运行】,或者点windows+R,输入“CMD”进入,依次输入以下命令输入“U盘盘符”进入U…

    2022年10月1日
    4
  • C#文件流FileStream的用法[通俗易懂]

    C#文件流FileStream的用法[通俗易懂]1、简介FileStream类:主要用于对文件进行读取、写入、打开和关闭操作,并对其他与文件相关的操作系统句柄进行操作,如管道、标准输入和标准输出。读写操作可以指定为同步或异步操作。FileStream对输入输出进行缓冲,从而提高性能。——MSDN**简单点说:FileStream类可以对任意类型的文件进行读取操作,可根据需要来指定每次读取的字节长度(这是比File类优秀的地方之一),…

    2022年7月21日
    18
  • 项目运行指标:micrometer自定义metrics

    项目运行指标:micrometer自定义metricsmicrometer 自定义 metricsmicro 提供了基于 Java 的 monitorfacad 其与 springboot 应用和 prometheus 的集成方式如下图展示上图中展示的很清楚 应用通过 micrometer 采集和暴露监控端点给 prometheus prometheus 通过 pull 模式来采集监控时序数据信息 之后作为数据源提供给 grafana 进行展示 micrometer 支持的度量方式及在 springboot 中的应用示例 CounterCount 计数器 简单理解

    2025年7月17日
    4
  • Coze扣子工作流实战教程:一键生成商品详情页的变现实操指南

    Coze扣子工作流实战教程:一键生成商品详情页的变现实操指南

    2026年3月12日
    4
  • 粒子群算法(PSO)的Python实现(求解多元函数的极值)

    粒子群算法(PSO)的Python实现(求解多元函数的极值)PSO是寻优算法中比较简单的一种,本文用Python简单实现了PSO算法,用来求解一个五元函数的最大值,并与MATLAB的fmincon函数的运行结果做比较。

    2022年4月29日
    185
  • n8n进阶教程:打造企业级自动化工作流

    n8n进阶教程:打造企业级自动化工作流

    2026年3月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号