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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Emmet最全提示说明

    Emmet最全提示说明

    2021年11月24日
    54
  • 23种常用设计模式的UML类图

    23种常用设计模式的UML类图23种常用设计模式的UML类图本文UML类图参考《HeadFirst设计模式》(源码)与《设计模式:可复用面向对象软件的基础》(源码)两书中介绍的设计模式与UML图。整理常用设计模式的类图,一

    2022年6月30日
    31
  • Markdown (CSDN) MD编辑器(二)- 文本样式(更改字体、字体大小、字体颜色、加粗、斜体、高亮、删除线)[通俗易懂]

    Markdown (CSDN) MD编辑器(二)- 文本样式(更改字体、字体大小、字体颜色、加粗、斜体、高亮、删除线)[通俗易懂]介绍使用markdown编辑器时,利用html的font、mark、strong、em、del、big、small等标签改变文本的颜色、字体、字体大小、加粗字体、斜体、高亮等

    2022年9月23日
    3
  • 怎样更新pip(怎么升级python的pip)

    在Python的環境中,許多人都習慣使用PIP指令來管理模組的安裝、更新與移除的動作。但是最近我一直遇到一個問題,就是下完PIP指令執行完後都會在最後出現要求更新PIP版本的訊息,例如:WARNING:Youareusingpipversion19.2.1,howeverversion19.2.3isavailable.Youshouldconsider…

    2022年4月16日
    63
  • TiKV 源码解析系列文章(十三)MVCC 数据读取

    TiKV 源码解析系列文章(十三)MVCC 数据读取作者:施闻轩在《TiKV源码解析系列文章(十二)分布式事务》中,我们介绍了如何在满足事务特性的要求下进行数据写入。本文将介绍数据读取的流程。由于顺序扫(ForwardScan)比较具有代表性,因此本文只介绍顺序扫的流程,而不会介绍点查或逆序扫。点查是顺序扫的简化,相信读者理解了顺序扫的流程后能自己想出点查的实现,而逆序扫与顺序扫也比较类似,主要区别在于从后向前扫,稍复杂一些,相信大家在阅…

    2022年9月23日
    5
  • Netbeans安装教程

    Netbeans安装教程准备工作:电脑安装完JDK能翻墙的浏览器开始:假如没有安装JDK,可以看我写的如何安装JDK1.8.0_101在Oracle官网上下载NetBeans选择相应的版本下载,按照箭头指示方向,即点击AcceotLicenseAgreement然后选择适合自己电脑的版本Windowsx64右面的下载地址建议将安装包放在D盘,新建Netbeans…

    2025年8月20日
    3

发表回复

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

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