案例:记住上一次访问时间
        1. 需求:
            1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
            2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串

2. 分析:
            1. 可以采用Cookie来完成
            2. 在服务器中的Servlet判断是否有一个名为lastTime的cookie
                1. 有:不是第一次访问
                    1. 响应数据:欢迎回来,您上次访问时间为:2018年6月10日11:50:20
                    2. 写回Cookie:lastTime=2018年6月10日11:50:01
                2. 没有:是第一次访问
                    1. 响应数据:您好,欢迎您首次访问
                    2. 写回Cookie:lastTime=2018年6月10日11:50:00

注意点:

1. 获取PrintWriter流之前必须设置编码

 response.setContentType("text/html;charset=utf-8");

2. cookie中不能包含特殊字符,比如空格,所以要进行编码以及解码

 package cn.itcast.web.servlet;

 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 java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date; @WebServlet("/cookieServlet")
public class CookieServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 获取PrintWriter流之前设置响应的消息体的数据格式以及编码
response.setHeader("content-type", "text/html;charset=utf-8"); // 1.获取所有Cookie
Cookie[] cookies = request.getCookies();
boolean flag = false; // 没有叫做lastTime名称的cookie // 2.遍历cookie数组
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("lastTime")) { // 不是第一次访问
flag = true; String value = cookie.getValue();
value = URLDecoder.decode(value, "utf-8"); // URL解码
response.getWriter().write("欢迎回来,您上次的访问时间是" + value); // 将cookie的value值改为此次登录的时间,重新发送cookie
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
str_date = URLEncoder.encode(str_date, "utf-8"); // URL编码,因为str_date中包含空格,如果不进行URL编码将会报错
cookie.setValue(str_date);
cookie.setMaxAge(30 * 24 *60 *60); // 设置cookie的存活时间
response.addCookie(cookie);
break;
}
}
} if (cookies == null || flag == false){ // 第一次访问
response.getWriter().write("<h1>您好,欢迎您首次访问<h1>"); Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_date = sdf.format(date);
str_date = URLEncoder.encode(str_date, "utf-8");
Cookie cookie = new Cookie("lastTime", str_date);
cookie.setMaxAge(30 * 24 *60 *60);
response.addCookie(cookie);
} } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}

cookie - 提示上一次访问该网页的时间的更多相关文章

  1. 简单的Cooki案例——记录用户上次访问该网页的时间

    功能: 帮助网站实现提示客户端计算机上次访问网站的时间 实现原理: 将每一个会话作为一次访问过程,将每次会话的开始时间作为每次访问网站的时间,然后将这个时间以Cookie的形式存储到客户端的计算机中, ...

  2. IIS 您要访问的网页有问题,无法显示!

    提示:您要访问的网页有问题,无法显示.HTTP 500 – 内部服务器错误.”的问题解决方案! IIS服务器出现错误的原因很多,请尝试以下操作:1.查看网站属性——文档看看启用默认文档中是否存在:in ...

  3. chm文件访问提示:已取消到该网页的导航

    chm文件访问提示:已取消到该网页的导航或不能链接网页 解决方案: 右击chm文件,选择:属性->解除锁定 ,再重新打开文件即可

  4. 微信&QQ中打开网页提示“已停止访问该网页”是怎么回事?

    背景 大家是不是经常会遇到这种情况,分享出去的网页链接在微信里或者QQ里打开会提示“已停止访问该网页”,当大家看到这种的提示的时候就说明你访问的网页已经被腾讯拦截了. 当大家遇到以上这种情况的时候要怎 ...

  5. cookie实例---显示上一次访问的时间与java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value

    创建Cookie,名为lasttime,值为当前时间,添加到response中: 在A.jsp中获取请求中名为lasttime的Cookie: 如果不存在输出“您是第一次访问本站”,如果存在输出“您上 ...

  6. 通过http、https域名访问静态网页、nginx配置负载均衡(nginx配置)

    很多场景下需要可以通过浏览器访问静态网页,不想把服务器ip地址直接暴露出来,通过nginx可以解决这个问题. 实现http域名访问静态网页 1.域名解析配置(本文都是以阿里云为例,其他平台,操作步骤类 ...

  7. php中cookie实现二级域名可访问操作的方法

    本文实例讲述了php中cookie实现二级域名可访问操作的方法.分享给大家供大家参考.具体方法如下: cookie在一些应用中很常用,假设我有一个多级域名要求可以同时访问主域名绑定的cookie,下面 ...

  8. 易语言关于使用CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试

    易语言关于使用 CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试 测试模块情况: |-精易模块5.8  |-鱼刺类Http  |-libCURL +++ ...

  9. 【Node.js】利用node.js搭建服务器并访问静态网页

    node.js是一门服务端的语言,下面讲讲如何利用node.js提供给我们的api来搭建服务器,并且访问静态网页 项目结构如下 ------------------------------------ ...

随机推荐

  1. text-html 转译

    var HtmlUtil = { 2 /*1.用浏览器内部转换器实现html编码(转义)*/ 3 htmlEncode:function (html){ 4 //1.首先动态创建一个容器标签元素,如D ...

  2. Linux课程---14、linux下lamp环境如何安装

    Linux课程---14.linux下lamp环境如何安装 一.总结 一句话总结: 要按顺序安装,比如apache需要在php之前安装, 一.安装 gcc 编译器 二.卸载 rpm 安装的 http ...

  3. vue.js出现cannot get /错误

    config中的index.js 原来是 assetsPublicPath: './', 改为 assetsPublicPath: '/',

  4. 怎么规划一个零基础学习Unity3D的“方法”或者“流程”?

    具体出处:https://www.zhihu.com/question/35542990 我只是一个计算机相关专业毕业的,已经掌握了基础的C#并开发过.net的.目前突然心血来潮对unity3D有兴趣 ...

  5. idea2017.2普通web工程将lib包导入到artifact中的问题。

    这个问题找了解决了好久. 刚开始我以为是c3p0包错误,就把所有jar包都删了. 把依赖里的,library的,artfact->avaliable elements里的都删了. 重新复制粘贴到 ...

  6. C 遍历目录及其子目录

    遍历某一目录,获取该目录下所有文件路径的数组 #include <iostream> #include <dirent.h> #include <vector> v ...

  7. springboot+vue的前后端分离与合并方案

    pringboot和vue结合的方案网络上的主要有以下两种: 1. [不推荐]在html中直接使用script标签引入vue和一些常用的组件,这种方式和以前传统的开发是一样的,只是可以很爽的使用vue ...

  8. Spring父子上下文(WebApplicationContext)(防止事务失效)

    如果你使用了listener监听器来加载配置,一般在Struts+Spring+Hibernate的项目中都是使用listener监听器的.如下 <listener> <listen ...

  9. Java虚拟机性能管理神器 - VisualVM(6) 排查JAVA应用程序内存泄漏【转】

    Java虚拟机性能管理神器 - VisualVM(6) 排查JAVA应用程序内存泄漏[转] 标签: javajvm内存泄漏监控工具 2015-03-11 18:30 1870人阅读 评论(0) 收藏  ...

  10. token方法可用于临时关闭令牌验证,

    token方法可用于临时关闭令牌验证,例如: $model->token(false)->create(); 即可在提交表单的时候临时关闭令牌验证(即使开启了TOKEN_ON参数). 大理 ...