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


相关推荐

  • 什么是配额_配额抽样的计算

    什么是配额_配额抽样的计算xx局点FusionCloud6.3 type1 计算配额失败问题

    2022年4月20日
    43
  • 阿里云配置MYSQL远程连接

    想要远程连接阿里云服务器安装的mysql(不是RDS,RDS申请外网地址即可)需要两个步骤,第一步是修改允许连接mysql的权限,具体操作如下:首先登录:mysql-uroot-hlocalhost-ppassword打开mysql数据库:usemysql;将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip:updateuse

    2022年4月6日
    44
  • linux中env命令_centos7环境变量配置

    linux中env命令_centos7环境变量配置env命令linux系统中的环境变量是很多的,就算是一些常用的环境变量我们也不一定能记得全名。env命令可以显示当前操作系统所有的环境变量,下面的示例代码是Ubuntu系统的。示例dai@ubuntu:~$envUSER=daiXDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0SSH_AUTH_SOCK=/run/user/

    2022年10月1日
    6
  • FileInputFormat.setInputPaths多路径读取规则

    FileInputFormat.setInputPaths(job,input1,input2);在读取文件时候,默认先读单个大文件所在的路径(一次性读清该文件下所有文件),后读小文件所在路径。写协同过滤时候,想让setInputPaths方法先读第一个输入路径input1,再读第二个输出路径input2就算把文件位置交换,读取的顺序还是错误publicstaticclassmyMapp…

    2022年4月6日
    34
  • 几何角度理解叉乘

    几何角度理解叉乘简介 本文解释了叉乘的计算 行列式 和几何解释之间的关系 1 叉乘的计算及几何解释在我学习叉乘 本文只考虑三维向量 的时候 老师教了我们两个东西 叉乘的计算方法 用行列式 设有向量 v v1 v2 v3 w w1 w2 w3 vec v v 1 v 2 v 3 quad vec w w 1 w 2 w 3 quadv v1 v2 v3

    2025年6月25日
    2
  • hive sql语句和mysql用法区别存档

    hive sql语句和mysql用法区别存档写在前面以下功能版本:mysql版本:5.6.17hive版本:2.2.41、GROUP_CONCAT先看下面数据表test_group:(1)简单情况需求如下:写出一个sql语句,按照category分组,并把组内的name使用“;”分隔符连接。①mysql中SELECT category, GROUP_CONCAT(nameSEPARATOR";&quo

    2022年10月2日
    2

发表回复

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

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