欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java使用cookie顯示最近查看過的書

 更新時(shí)間:2016年04月19日 16:17:40   作者:zqwang121  
這篇文章主要為大家詳細(xì)介紹了Java使用cookie顯示最近查看過的書,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java使用cookie顯示最近查看過的書的相關(guān)方法,供大家參考,具體內(nèi)容如下

1.ben包    

import java.io.Serializable;
 
public class Book implements Serializable {
 private String id;
 private String name;
 private String price;
 private String auth;
 private String publish;
 private String description;
  
 public Book() {
 }
  
 public Book(String id, String name, String price, String auth,
   String publish, String description) {
  super();
  this.id = id;
  this.name = name;
  this.price = price;
  this.auth = auth;
  this.publish = publish;
  this.description = description;
 }
 
 public String getDescription() {
  return description;
 }
 
 public void setDescription(String description) {
  this.description = description;
 }
 
 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 getPrice() {
  return price;
 }
 public void setPrice(String price) {
  this.price = price;
 }
 public String getAuth() {
  return auth;
 }
 public void setAuth(String auth) {
  this.auth = auth;
 }
 public String getPublish() {
  return publish;
 }
 public void setPublish(String publish) {
  this.publish = publish;
 }
 
}

2.Dao包    

import java.util.LinkedHashMap;
import java.util.Map;
 
import cn.huiyu.ben.Book;
 
 
 
public class BookDao {
 private static Map<String,Book> bookMap = new LinkedHashMap<String, Book>();
 private BookDao() {
 }
 static{
  bookMap.put("1", new Book("1","1111","11.0","zqwang","111出版社","111111111"));
  bookMap.put("2", new Book("2","2222","22.0","zqwang","222出版社","222222222"));
  bookMap.put("3", new Book("3","3333","33.0","zqwang","333出版社","333333333"));
 }
  
 public static Map<String,Book> getBooks(){
  return bookMap;
 }
  
 public static Book getBook(String id){
  return bookMap.get(id);
 }
}

3.servlet    

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html;charset=utf-8");
  //1.查詢數(shù)據(jù)庫(kù)中所有的書展示
  Map<String,Book> map = BookDao.getBooks();
  for(Map.Entry<String , Book> entry : map.entrySet()){
   Book book = entry.getValue();
   response.getWriter().write("<a href='"+request.getContextPath()+"/servlet/BookInfoServlet?id="+book.getId()+"'>"+book.getName()+"</a><br>");
  }
  response.getWriter().write("<hr>");
   
  //2.顯示之前看過的書
  Cookie [] cs = request.getCookies();
  Cookie findC = null;
  if(cs!=null){
   for(Cookie c : cs){
    if("last".equals(c.getName())){
     findC = c;
    }
   }
  }
  if(findC == null){
   response.getWriter().write("沒有看過任何書!");
  }else{
   response.getWriter().write("您曾經(jīng)瀏覽過的書:<br>");
   String[] ids = findC.getValue().split(",");
   for(String id : ids){
    Book book = BookDao.getBook(id);
    response.getWriter().write(book.getName()+"<br>");
   }
  }
 }

4.servlet

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  response.setContentType("text/html;charset=utf-8");
  //1.獲取要看的書的id,查詢數(shù)據(jù)庫(kù)找出書,輸出書的詳細(xì)信息
  String id = request.getParameter("id");
  Book book = BookDao.getBook(id);
  if(book==null){
   response.getWriter().write("找不到這本書!");
   return;
  }else{
   response.getWriter().write("<h1>書名:"+book.getName()+"</h1>");
   response.getWriter().write("<h3>作者:"+book.getAuth()+"</h3>");
   response.getWriter().write("<h3>售價(jià):"+book.getPrice()+"</h3>");
   response.getWriter().write("<h3>出版社:"+book.getPublish()+"</h3>");
   response.getWriter().write("<h3>描述信息:"+book.getDescription()+"</h3>");
  }
   
  //2.發(fā)送cookie保存最后看過的書
  // --- 1 --> 1
  // 1 --2,1 --> 2,1
  // 2,1--3,2,1 --> 3,2,1
  // 3,2,1 -- 4,3,2 --> 4,3,2
  // 4,3,2 --3,4,2 --> 3,4,2
  String ids = "";
   
  Cookie [] cs = request.getCookies();
  Cookie findC = null;
  if(cs!=null){
   for(Cookie c : cs){
    if("last".equals(c.getName())){
     findC = c;
    }
   }
  }
   
  if(findC == null){
   //說明之前沒有看過書的記錄
   ids += book.getId();
  }else{
   //說明之前有歷史看過的書的記錄,需要根據(jù)歷史記錄算一個(gè)新的記錄出來
   String [] olds = findC.getValue().split(","); 
   StringBuffer buffer = new StringBuffer();
   buffer.append(book.getId()+",");
   for(int i = 0;i<olds.length && buffer.toString().split(",").length<3 ;i++){
    String old = olds[i];
    if(!old.equals(book.getId())){
     buffer.append(old+",");
    }
   }
   ids = buffer.substring(0, buffer.length()-1);
  }
   
   
   
  Cookie lastC = new Cookie("last",ids);
  lastC.setMaxAge(3600*24*30);
  lastC.setPath(request.getContextPath());
  response.addCookie(lastC);
 }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)Java使用cookie顯示最近查看過的書的方法有所幫助。

相關(guān)文章

  • Spring Aop 如何獲取參數(shù)名參數(shù)值

    Spring Aop 如何獲取參數(shù)名參數(shù)值

    這篇文章主要介紹了Spring Aop 如何獲取參數(shù)名參數(shù)值的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java?IP歸屬地功能實(shí)現(xiàn)詳解

    java?IP歸屬地功能實(shí)現(xiàn)詳解

    前一陣子抖音和微博開始陸續(xù)上了IP歸屬地的功能,引起了眾多熱議,有大批在國(guó)外的老鐵們開始"原形畢露",被定位到國(guó)內(nèi)來,那么IP歸屬到底是怎么實(shí)現(xiàn)的呢?那么網(wǎng)紅們的歸屬地到底對(duì)不對(duì)呢
    2022-07-07
  • 淺談一下Spring中的createBean

    淺談一下Spring中的createBean

    createBean是創(chuàng)建Bean的主要方法, 該方法位于:AbstractBeanFactory的doGetBean方法中的createBean調(diào)用。本文就來淺談一下Spring中的createBean?,感興趣的可以了解一下
    2022-07-07
  • 詳解Mybatis核心類SqlSessionFactory的構(gòu)建

    詳解Mybatis核心類SqlSessionFactory的構(gòu)建

    這篇文章主要為大家詳細(xì)介紹了Mybatis核心類SqlSessionFactory的構(gòu)建過程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • Java日期轉(zhuǎn)換注解配置date?format時(shí)間失效

    Java日期轉(zhuǎn)換注解配置date?format時(shí)間失效

    這篇文章主要為大家介紹了Java日期轉(zhuǎn)換注解配置date?format時(shí)間失效,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Java實(shí)現(xiàn)文件上傳保存

    Java實(shí)現(xiàn)文件上傳保存

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)文件上傳保存,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java責(zé)任鏈模式詳解

    Java責(zé)任鏈模式詳解

    責(zé)任鏈模式(Chain?of?Responsibility?Pattern)是一種行為型設(shè)計(jì)模式,它用于將請(qǐng)求的發(fā)送者和接收者解耦,使得多個(gè)對(duì)象都有機(jī)會(huì)處理這個(gè)請(qǐng)求,本文將詳細(xì)介紹?Java?中的責(zé)任鏈模式,包括其概念、結(jié)構(gòu)、實(shí)現(xiàn)方式以及應(yīng)用案例等,需要的朋友可以參考下
    2023-05-05
  • Spring Boot整合elasticsearch的詳細(xì)步驟

    Spring Boot整合elasticsearch的詳細(xì)步驟

    這篇文章主要介紹了Spring Boot整合elasticsearch的詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 解決SecureRandom.getInstanceStrong()引發(fā)的線程阻塞問題

    解決SecureRandom.getInstanceStrong()引發(fā)的線程阻塞問題

    這篇文章主要介紹了解決SecureRandom.getInstanceStrong()引發(fā)的線程阻塞問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java實(shí)現(xiàn)的DES加密解密工具類實(shí)例

    Java實(shí)現(xiàn)的DES加密解密工具類實(shí)例

    這篇文章主要介紹了Java實(shí)現(xiàn)的DES加密解密工具類,結(jié)合具體實(shí)例形式分析了Java實(shí)現(xiàn)的DES加密解密工具類定義與使用方法,需要的朋友可以參考下
    2017-09-09

最新評(píng)論