zoukankan      html  css  js  c++  java
  • Cookie应用

    CookieDemo1

      1 import java.io.IOException;
      2 import java.io.PrintWriter;
      3 import java.util.LinkedHashMap;
      4 import java.util.Map;
      5 
      6 import javax.servlet.ServletException;
      7 import javax.servlet.http.Cookie;
      8 import javax.servlet.http.HttpServlet;
      9 import javax.servlet.http.HttpServletRequest;
     10 import javax.servlet.http.HttpServletResponse;
     11 
     12 import sun.security.action.PutAllAction;
     13 
     14 import com.sun.faces.config.beans.LifecycleBean;
     15 
     16 public class CookieDemo1 extends HttpServlet {
     17 
     18     public void doGet(HttpServletRequest request, HttpServletResponse response)
     19             throws ServletException, IOException {
     20         response.setCharacterEncoding("UTF-8");
     21         response.setContentType("text/html;charset=UTF-8");
     22         PrintWriter out = response.getWriter();
     23         
     24         //1.输出网站所有商品
     25         out.print("本站的所有商品:<br/>");
     26         //模拟一个数据库输出
     27         Map<String, Book> map = Db.getAll();
     28         //增强for循环迭代map
     29         for(Map.Entry<String,Book> entry:map.entrySet()){
     30             Book book = entry.getValue();
     31             out.print("<a href='/test01/servlet/CookieDemo2?id="+book.getId()+"' target='_blank'>"+book.getName()+"</a><br/>");
     32         }
     33         
     34         //2.显示用户曾经看过的商品
     35         out.print("<br/>你曾经看过的商品:<br/>");
     36         Cookie[] cookies = request.getCookies();
     37         for(int i = 0;cookies!=null && i<cookies.length;i++){
     38             if(cookies[i].getName().equals("bookHistory")){
     39                 String[] ids = cookies[i].getValue().split("\,");
     40                 //增强for循环
     41                 for(String id:ids){
     42                     Book book =map.get(id);
     43                     out.print(book.getName()+"<br/>");
     44                 }
     45             }
     46         }
     47     }
     48 
     49     public void doPost(HttpServletRequest request, HttpServletResponse response)
     50             throws ServletException, IOException {
     51 
     52     }
     53 }
     54 class Db{
     55     private static Map<String, Book> map = new LinkedHashMap<String,Book>();
     56     static{
     57         map.put("1", new Book("1", "水浒传", "施耐庵", "good"));
     58         map.put("2", new Book("2", "西游记", "吴承恩", "good"));
     59         map.put("3", new Book("3", "三国演义", "罗贯中", "good"));
     60         map.put("4", new Book("4", "红楼梦", "曹雪芹", "good"));
     61     }
     62     public  static Map<String, Book> getAll(){
     63         return map;
     64     }
     65 }
     66 class Book{
     67     private String id;
     68     private String name;
     69     private String author;
     70     private String description;
     71     
     72     public Book(String id, String name, String author, String description) {
     73         super();
     74         this.id = id;
     75         this.name = name;
     76         this.author = author;
     77         this.description = description;
     78     }
     79 
     80     public Book() {
     81         super();
     82         // TODO Auto-generated constructor stub
     83     }
     84 
     85     public String getId() {
     86         return id;
     87     }
     88 
     89     public void setId(String id) {
     90         this.id = id;
     91     }
     92 
     93     public String getName() {
     94         return name;
     95     }
     96 
     97     public void setName(String name) {
     98         this.name = name;
     99     }
    100 
    101     public String getAuthor() {
    102         return author;
    103     }
    104 
    105     public void setAuthor(String author) {
    106         this.author = author;
    107     }
    108 
    109     public String getDescription() {
    110         return description;
    111     }
    112 
    113     public void setDescription(String description) {
    114         this.description = description;
    115     }
    116     
    117     
    118 }

    CookieDemo2

     1 import java.awt.image.RescaleOp;
     2 import java.io.IOException;
     3 import java.io.PrintWriter;
     4 import java.util.Arrays;
     5 import java.util.LinkedList;
     6 
     7 import javax.servlet.ServletException;
     8 import javax.servlet.http.Cookie;
     9 import javax.servlet.http.HttpServlet;
    10 import javax.servlet.http.HttpServletRequest;
    11 import javax.servlet.http.HttpServletResponse;
    12 
    13 //显示商品详细信息
    14 public class CookieDemo2 extends HttpServlet {
    15 
    16     public void doGet(HttpServletRequest request, HttpServletResponse response)
    17             throws ServletException, IOException {
    18         // 中文乱码
    19         response.setCharacterEncoding("UTF-8");
    20         response.setContentType("text/html;charset=UTF-8");
    21         PrintWriter out = response.getWriter();
    22 
    23         // 显示商品详细信息,先得到商品id
    24         String id = request.getParameter("id");
    25         Book book = Db.getAll().get(id);
    26 
    27         out.print(book.getId() + "<br/>");
    28         out.print(book.getName() + "<br/>");
    29         out.print(book.getAuthor() + "<br/>");
    30         out.print(book.getDescription() + "<br/>");
    31 
    32         // 构建Cookie,回写给浏览器
    33         String cookieValue = bulidCookieValue(id, request);
    34         Cookie cookie = new Cookie("bookHistory", cookieValue);
    35         cookie.setMaxAge(1 * 30 * 24 * 60 * 60);
    36         cookie.setPath("/test01");
    37         response.addCookie(cookie);
    38     }
    39 
    40     private String bulidCookieValue(String id, HttpServletRequest request) {
    41         
    42         //bookHistory = null   1    1
    43         //bookHistory = 2,5,1  1    1,2,5
    44         //bookHistory = 2,5,4  1    1,2,5
    45         //bookHistory = 2,5    1    1,2,5
    46                 
    47         String bookHistory = null;
    48         Cookie[] cookies = request.getCookies();
    49         for(int i = 0;cookies!=null && i<cookies.length;i++){
    50             if(cookies[i].getName().equals("bookHistory")){
    51                 bookHistory=cookies[i].getValue();
    52             }
    53         }
    54         
    55         if(bookHistory==null){
    56             //bookHistory = null    1    1
    57             return id;
    58         }
    59         
    60         LinkedList list = new LinkedList(Arrays.asList(bookHistory.split("\,")));
    61         if(list.contains(id)){
    62             //bookHistory = 2,5,1  1    1,2,5
    63             list.remove(id);
    64             list.addFirst(id);
    65         }else{
    66             if(list.size()>=3){
    67                 //bookHistory = 2,5,4  1    1,2,5
    68                 //bookHistory = 2,5    1    1,2,5
    69                 list.removeLast();
    70                 list.addFirst(id);
    71             }else{
    72                 list.addFirst(id);
    73             }
    74         }
    75         
    76         StringBuffer sb = new StringBuffer();
    77         for(int i=0;i<list.size();i++){
    78             sb.append(list.get(i)+",");
    79         }
    80         
    81         return sb.deleteCharAt(sb.length()-1).toString();
    82     }
    83 
    84     public void doPost(HttpServletRequest request, HttpServletResponse response)
    85             throws ServletException, IOException {
    86 
    87     }
    88 
    89 }
  • 相关阅读:
    Hdu 1094 A+B for Input-Output Practice (VI)
    Hdu 1091 A+B for Input-Output Practice (III)
    Hdu 1092 A+B for Input-Output Practice (IV)
    Hdu 1087 Super Jumping! Jumping! Jumping!
    scala学习笔记2(类,继承,抽象类)
    scala学习笔记1(表达式)
    把以前写的几个Linux Framebuffer小工具放到github上了,直接去下吧,别找我要了
    一位台湾朋友刚建的一个FTK的论坛,欢迎加入讨论
    Linux高端内存的由来
    read系统调用深度剖析
  • 原文地址:https://www.cnblogs.com/drinkMilk/p/6537960.html
Copyright © 2011-2022 走看看