Cookie获取用户的访问记录

使用Cookie技术  获取用户的访问记录

  1.创建 虚拟数据

package com.oracleoaec.cookie;

import java.util.HashMap;

public class GoodMap {
	public static void main(String[] args) {
		GoodMap instance = GoodMap.getInstance();
		String good = instance.getMap().get("2");
		System.out.println("商品为:"+good);
	}
	
	private HashMap<String, String> map = new HashMap<>();
	private static GoodMap goodMap = null;
	private GoodMap(){
		map.put("1", "袜子");
		map.put("2", "鞋子");
		map.put("3", "裤子");
		map.put("4", "女朋友");
		map.put("5", "男朋友");
		map.put("6", "丝袜");
	}
	public static synchronized GoodMap getInstance(){
		if(goodMap==null){
			goodMap = new GoodMap();
		}
		return goodMap;
	}
	//获得map容器的方法
	public HashMap<String, String> getMap() {
		return map;
	}
	
}

2.获取数据

package com.oracleoaec.cookie;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GoodMap2 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html;charset=UTF-8");
		PrintWriter writer = resp.getWriter();
		
		String str = req.getParameter("id");
		if (str != null) {
			Cookie cookie = new Cookie(str, str);
			resp.addCookie(cookie);
		}

		writer.write("<h1>所有的商品</h1>");
		GoodMap instance = GoodMap.getInstance();
		HashMap<String, String> map = instance.getMap();// 获取所有的商品
		// 遍历MAP容器
		Set<Entry<String, String>> entrySet = map.entrySet();
		for (Entry<String, String> entry : entrySet) {
			String id = entry.getKey();// 获得商品id
			String name = entry.getValue();// 获得商品名称
			// 搭建界面
			writer.write("<a href='doS8?id=" + id + "'>" + name + "</a><br/>");
		}

		writer.write("<hr/>");// 分割一下
		// 1.获取用户请求携带的所有cookies对象数组
		// 2.如果数组中有数据
		// 3.将数据内容响应到界面

		Cookie[] cookies = req.getCookies();
		writer.write("<h1>最近浏览过<h1/></br>");
		for (int i = 0; cookies != null && i < cookies.length; i++) {
			String id = cookies[i].getValue();// 这边获取的是商品id
			// 根据商品id获取商品名称
			String name = map.get(id);
			writer.write(id+name+ "</br>");
		}

	}
}

 //获取用户上一次的访问时间

package com.oracleoaec.cookie;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.text.SimpleDateFormat;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletDemo3 extends HttpServlet {
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html;charset=UTF-8");
		PrintWriter writer = resp.getWriter();//获得字符输出对象
		Cookie[] cookies = req.getCookies();//从请求域对象中获取cookies
		String value = null;
		for (int i = 0;cookies!=null&&i < cookies.length; i++) {
			String name = cookies[i].getName();//获取cookie的name
			if("time".equals(name)){
				value = cookies[i].getValue();//获取cookie的值
			}
		}
		//区分第一次访问和后续访问
		if(value==null){//第一次访问
			//写界面
			writer.write("用户为第一次访问<a href='doS3'>点击刷新</a>");
		}else{//后续访问
			//从req对象中取出cookies 重复的操作需要避免
			//将获取的字符串格式的时间 转换成Date对象
			Date date = new Date(Long.parseLong(value));
			writer.write("用户上一次访问时间为:"+date.toLocaleString()+"<a href='doS3'>点击刷新</a>");
//			new SimpleDateFormat("yyyy-MM-dd").format(date)
		}
		//将当前时间添加到resp响应对象的cookie中
		Cookie c1 = new Cookie("time",System.currentTimeMillis()+"");
		resp.addCookie(c1);
	}
}

 

posted @ 2017-02-27 22:56  john。  阅读(2169)  评论(0编辑  收藏  举报