十月30日

来源:互联网 发布:sai软件怎么安装 编辑:程序博客网 时间:2024/05/01 20:27

今天还是讲的cookie,主要难点是将书号写入cookie,

public class CookieDemo2 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();

//显示书的详细信息,根据id获取
String id = request.getParameter("id");
System.out.println(id);
BookDao bd = new BookDao();
Book book = bd.getBook(id);
System.out.println(book);
out.print("书号:"+book.getId()+"<br/>");
out.print("书名:"+book.getName()+"<br/>");
out.print("作者:"+book.getAuthor()+"<br/>");
out.print("描述:"+book.getDescript()+"<br/>");




//将书号写入cookie


String cookieValue = buildCookValue(id,request);
Cookie cookie = new Cookie("bookhistory",cookieValue);
cookie.setMaxAge(30*24*3600);
cookie.setPath("/BookHistory");
response.addCookie(cookie);

}

public String buildCookValue(String id,HttpServletRequest request){
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();
}
}
if(bookhistory == null){
return id;
}
LinkedList<String> list = new LinkedList(Arrays.asList(bookhistory.split(",")));

if(list.contains(id)){
list.remove(id);
list.addFirst(id);
}else{
//bookhistory=2,3,5 1 1,2,3
//bookhistory=2,3 1 1,2,3
if(list.size()>=3){
list.removeLast();
list.addFirst(id);
}else{
list.addFirst(id);
}

}
StringBuffer sb = new StringBuffer();
for(String bid: list){
sb.append(bid+",");
}

return sb.deleteCharAt(sb.length()-1).toString();
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request, response);
}

其中有下面几种情况:

//将书号写入cookie
//bookhistory=null 1 1
//bookhistory=2,3,1 1 1,2,3
//bookhistory=2,3,5 1 1,2,3
//bookhistory=2,3 1 1,2,3

原创粉丝点击