【JavaWeb】Cookie
2012-11-01 12:15
183 查看
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
//网站首页:显示用户上次访问时间
public class CookieDemo1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("您上次访问时间是:"); //lastAccessTime=2323878327
//您上次访问时间
Cookie cookies[] = request.getCookies();
for(int i=0;cookies!=null&& i<cookies.length;i++){
Cookie cookie = cookies[i];
if(cookie.getName().equals("lastAccessTime")){
long time = Long.parseLong(cookie.getValue());
Date d = new Date(time);
response.getWriter().write(d.toLocaleString());
}
}
//向浏览器发送本次访问的时间
Cookie cookie = new Cookie("lastAccessTime",System.currentTimeMillis()+"");
//cookie.setMaxAge(0);
cookie.setPath("/test");
response.addCookie(cookie);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
//代表首页
public class CookieDemo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//显示网站所有商品
out.write("本网站有如下商品<br/><br/>");
Set<Map.Entry<String, Book>> set = Db.getAllBook().entrySet();
for(Map.Entry<String, Book> me : set){
String id = me.getKey();
Book book = me.getValue();
out.write("<a href='/test/servlet/CookieDemo3?id="+id+"' target='_blank'>"+book.getName()+"</a><br/>");
}
//显示用户曾经浏览过的商品
out.write("<br/><br/><br/>您看过如下商品:<br/><br/>");
Cookie cookies[] = request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
if(cookies[i].getName().equals("bookHistory")){ //bookHistory=1_2_3
String value = cookies[i].getValue();
String ids[] = value.split("\\_"); //_
for(String id: ids){
Book book = (Book) Db.getAllBook().get(id);
out.write(book.getName()+"<br/>");
}
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
class Db{
private static Map<String,Book> map = new LinkedHashMap();
static{
map.put("1", new Book("1","javaweb开发","author1","一本好书"));
map.put("2", new Book("2","jdbc开发","author1","一本好书"));
map.put("3", new Book("3","sprng开发","author2","一本好书"));
map.put("4", new Book("4","hibernate开发","author1","一本好书"));
map.put("5", new Book("5","strurs开发","author2","一本好书"));
}
public static Map getAllBook(){
return map;
}
}
class Book{
private String id;
private String name;
private String author;
private String discription;
public Book() {
}
public Book(String id, String name, String author, String discription) {
super();
this.id = id;
this.name = name;
this.author = author;
this.discription = discription;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDiscription() {
return discription;
}
public void setDiscription(String discription) {
this.discription = discription;
}
}
//网站首页:显示用户上次访问时间
public class CookieDemo1 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("您上次访问时间是:"); //lastAccessTime=2323878327
//您上次访问时间
Cookie cookies[] = request.getCookies();
for(int i=0;cookies!=null&& i<cookies.length;i++){
Cookie cookie = cookies[i];
if(cookie.getName().equals("lastAccessTime")){
long time = Long.parseLong(cookie.getValue());
Date d = new Date(time);
response.getWriter().write(d.toLocaleString());
}
}
//向浏览器发送本次访问的时间
Cookie cookie = new Cookie("lastAccessTime",System.currentTimeMillis()+"");
//cookie.setMaxAge(0);
cookie.setPath("/test");
response.addCookie(cookie);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
//代表首页
public class CookieDemo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//显示网站所有商品
out.write("本网站有如下商品<br/><br/>");
Set<Map.Entry<String, Book>> set = Db.getAllBook().entrySet();
for(Map.Entry<String, Book> me : set){
String id = me.getKey();
Book book = me.getValue();
out.write("<a href='/test/servlet/CookieDemo3?id="+id+"' target='_blank'>"+book.getName()+"</a><br/>");
}
//显示用户曾经浏览过的商品
out.write("<br/><br/><br/>您看过如下商品:<br/><br/>");
Cookie cookies[] = request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
if(cookies[i].getName().equals("bookHistory")){ //bookHistory=1_2_3
String value = cookies[i].getValue();
String ids[] = value.split("\\_"); //_
for(String id: ids){
Book book = (Book) Db.getAllBook().get(id);
out.write(book.getName()+"<br/>");
}
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
class Db{
private static Map<String,Book> map = new LinkedHashMap();
static{
map.put("1", new Book("1","javaweb开发","author1","一本好书"));
map.put("2", new Book("2","jdbc开发","author1","一本好书"));
map.put("3", new Book("3","sprng开发","author2","一本好书"));
map.put("4", new Book("4","hibernate开发","author1","一本好书"));
map.put("5", new Book("5","strurs开发","author2","一本好书"));
}
public static Map getAllBook(){
return map;
}
}
class Book{
private String id;
private String name;
private String author;
private String discription;
public Book() {
}
public Book(String id, String name, String author, String discription) {
super();
this.id = id;
this.name = name;
this.author = author;
this.discription = discription;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDiscription() {
return discription;
}
public void setDiscription(String discription) {
this.discription = discription;
}
}
//显示商品详细信息 public class CookieDemo3 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 根据用户带的id,显示商品信息 String id = request.getParameter("id"); Book book = (Book) Db.getAllBook().get(id); out.write(book.getId() + "<br/>"); out.write(book.getName() + "<br/>"); out.write(book.getAuthor() + "<br/>"); out.write(book.getDiscription() + "<br/>"); //给用户发cookie String value = makeBookHistory(request,id); Cookie cookie = new Cookie("bookHistory",value); cookie.setMaxAge(3600); response.addCookie(cookie); } //创建向用户发送的 cookie值 private String makeBookHistory(HttpServletRequest request, String id) { String bookHistory = null; Cookie cookies[] = request.getCookies(); for(int i=0;cookies!=null && i<cookies.length;i++){ if(cookies[i].getName().equals("bookHistory")){ bookHistory = cookies[i].getValue(); } } //bookHistory=null 3 bookHistory=3 //bookHistory=1 3 bookHistory=3_1 //bookHistory=1_4_5 3 bookHistory=3_1_4 //bookHistory=1_3_5 3 bookHistory=3_1_5 if(bookHistory==null){ bookHistory = id; return bookHistory; } //bookHistory=1_3_5 LinkedList<String> list = new LinkedList(Arrays.asList(bookHistory.split("\\_"))); //list[1,3,5] 3 /*if(list.contains(id)){ list.remove(id); list.addFirst(id); }else{ if(list.size()>=3){ //list[1,4,5] 3 list.removeLast(); list.addFirst(id); }else{ list.addFirst(id); } }*/ if(list.contains(id)) list.remove(id); else{ if(list.size()>=3) list.removeLast(); } list.addFirst(id); StringBuffer sb = new StringBuffer(); for(String bid : list){ sb.append(bid+"_"); } sb.deleteCharAt(sb.length()-1); return sb.toString(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
相关文章推荐
- 【简记】Java Web 内幕——Cookie与Session深度解析
- java_web之使用cookie显示曾经访问过的商品
- javaWeb-Cookie和Session
- javaWeb开发之MySQL和Cookie的使用练习中遇到的一些问题及解决
- [置顶] 【Javaweb】Cookie应用——显示用户上次访问网站的时间
- Java Web 之 Cookie session
- JavaWeb-Cookie和Session
- 十二.javaweb之Cookie学习
- 重新学javaweb---cookie&&session
- Java-WEB 中Cookie的使用
- 初学Java Web(5)——cookie-session学习
- JavaWeb之Cookie&&Session详解
- JavaWeb开发Cookie和Session
- java web-如何实现IE禁用cookie后继续使用session
- JavaWeb之Servlet:Cookie 和 Session
- JavaWeb_Cookie与Session
- JavaWeb -- 会话, Cookie 和 Session
- JavaWeb--Session、Cookie
- 【《深入解析Java Web技术内幕》学习思维导图】第10章 深入理解Session和Cookie
- JavaWeb---总结(十一)使用Cookie进行会话管理