package com.dp.javaweb.Servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.LinkedList;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dp.javaweb.Bean.Book;
import com.dp.javaweb.Bean.BookDtatbase;
import com.dp.javaweb.Constant.Costant;
public class ShowBooksAll extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
//显示书籍的详细内容
String id=request.getParameter("id");
Book book=BookDtatbase.findBookId(id);
out.write(book.toString());
//向客户端写回bookhistory名字的Cookie
String ids=makeIds(request,id);
Cookie c=new Cookie(Costant.BOOK_HISTORY, ids);
c.setMaxAge(60*60);
c.setPath(request.getContextPath());
response.addCookie(c);
}
//组织ID情况分析
// 原有的cookie中的id 当前新访问的书的id 应该写回的id
//a、Cookie[] cs为null 1 bookHistory=1
//b、没有bookHistory的cookie 1 bookHistory=1
//c、1 2 bookHistory=2-1
//d、2-1 1 bookHistory=1-2
//e、1-2 3 bookHistory=3-1-2
//f、1-2-3 2 bookHistory=2-1-3
//g、2-1-3 4 bookHistory=4-2-1
private String makeIds(HttpServletRequest request, String id) {
Cookie cs[]=request.getCookies();
//a情况
if(cs==null){
return id;
}
//b情况
Cookie cookie=null;
for(Cookie c:cs){
if(Costant.BOOK_HISTORY.equals(c.getName())){
cookie=c;
break;
}
}
//cdefg
String ids[]=cookie.getValue().split("\\-");
//用linkedlist就可以做这种方式的添加与删除
LinkedList<String> list=new LinkedList<String>(Arrays.asList(ids));
//cde
if(list.size()<3){
if(list.contains(id)){
list.remove(id);
}
list.addFirst(id);
}else{//fg
if(list.contains(id)){
list.remove(id);
}else{
list.remove(id);
}
list.addFirst(id);
}
StringBuffer sb=new StringBuffer();
for(int i=0;i<list.size();i++){
if(i>0){
sb.append("-");
}
sb.append(list.get(i));
}
return sb.toString();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
- 1
- 2
- 3
前往页