zoukankan      html  css  js  c++  java
  • Cookie的使用(判断登录时间)

    案例:记住上一次访问时间
    		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:01
    
    package com.itcsl.cookie;
    
    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 javax.xml.crypto.Data;
    import java.io.IOException;
    import java.net.URLDecoder;
    import java.net.URLEncoder;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    
    @WebServlet("/cookieTest")
    public class cookieTest extends HttpServlet {
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/html;charset=utf-8");
    		//1.获取所有的coookie
    		Cookie[] cookies = request.getCookies();
    		boolean flag=false;
    		//2.遍历所有的cookie
    		//先判断不为空,长度大于0
    		if (cookies!=null&&cookies.length>0){
    			for (Cookie c:cookies){
    				String name = c.getName();
    				//4.判断,名称是否为lastTime
    				if ("lastTime".equals(name)){
    					//有该cookie,不是第一次访问
    					flag=true;
    					//设置cooki的value
    					// 获取当前时间的字符串,重新设置cookie的值重新发送
    					Date date = new Date();
    					SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    					String str_date = dateFormat.format(date);
    					System.out.println("编码前的数据:"+str_date);
    
    					//URL编码
    					str_date=URLEncoder.encode(str_date,"utf-8");
    					c.setValue(str_date);
    
    					//设置cookie的存活时间
    					c.setMaxAge(60*60*24*30);//一个月
    
    					//响应数据
    					//获取cookie的时间
    					String value = c.getValue();
    
    					//URL解码
    					System.out.println("编码的的数据:"+str_date);
    					value= URLDecoder.decode(value,"utf-8");
    					System.out.println("解码后的数据:"+value);
    
    					response.getWriter().write("欢迎回来,您上次访问时间为:"+value);
    					break;
    				}
    			}
    		}
    
    		if (cookies==null||cookies.length==0||flag==false){
    			//没有,第一次访问
    
    			//设置cooki的value
    			// 获取当前时间的字符串,重新设置cookie的值重新发送
    			Date date = new Date();
    			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    			String str_date = dateFormat.format(date);
    			//URL编码
    			str_date=URLEncoder.encode(str_date,"utf-8");
    			Cookie cookie = new Cookie("lastTime",str_date);
    
    			response.addCookie(cookie);//发送cookie
    
    			//设置cookie的存活时间
    			cookie.setMaxAge(60*60*24*30);//一个月
    			response.getWriter().write("您好,欢迎您首次访问");
    
    		}
    
    	}
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		this.doPost(request,response);
    	}
    }
    
    
    每个人都是在努力的路上,别因为别人的误解而放弃,,术业有专攻,如是而已。
  • 相关阅读:
    Linux入门(四)linux运行环境mysql详细操作及安装phpmyadmin
    Linux入门(五)linux服务器文件远程管理
    Linux入门(六)ubuntu下vim编辑器安装与使用
    windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境)
    Linux入门(三)搭建服务器linux运行环境LAMP/LNMP
    Linux入门(二)Linux基本命令及基本操作
    discuz使用总结
    ThinkPHP3.1快速入门(3)查询语言
    LeetCode 611. 有效三角形的个数(Valid Triangle Number)
    LeetCode 566. 重塑矩阵(Reshape the Matrix)
  • 原文地址:https://www.cnblogs.com/16699qq/p/13554926.html
Copyright © 2011-2022 走看看