packagede.bvb.cookie;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.Arrays;importjava.util.Date;importjava.util.LinkedList;importjava.util.Map.Entry;importjavax.enterprise.inject.ResolutionException;importjavax.servlet.ServletException;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.swing.text.DateFormatter;/*** 显示商品详情
*
*@authorjoker
**/
public class CookieDemo12 extendsHttpServlet {public voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out=response.getWriter();//显示商品详情
out.write("商品详情:
");
String id= request.getParameter("id");for (Entryb : Db.getBooks().entrySet()) {if(id.equals(b.getKey())) {
out.write(b.getValue().getId()+ "
");
out.write(b.getValue().getName()+ "
");
out.write(b.getValue().getDescription()+ "
");
}
}//回写cookie,保存最后浏览的商品id
String history =buildIds(id, request);
Cookie cookie= new Cookie("history", history);
cookie.setMaxAge(1 * 30 * 24 * 60 * 60);
cookie.setPath("/web");
response.addCookie(cookie);
}privateString buildIds(String id, HttpServletRequest request) {
String history= null;
Cookie[] cookies=request.getCookies();for (int i = 0; cookies != null && i < cookies.length; i++) {if (cookies[i].getName().equals("history")) {
history=cookies[i].getValue();
}
}if (history == null) {returnid;
}
LinkedList ids = new LinkedList(Arrays.asList(history
.split("\\,")));if(ids.contains(id)) {
ids.remove(id);
}else{if (ids.size() >= 3) { //最多显示3条浏览历史
ids.removeLast();
}
}
ids.addFirst(id);
StringBuffer sb= newStringBuffer();for(String s : ids) {
sb.append(s).append(",");
}return sb.deleteCharAt(sb.length() - 1).toString();
}public voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
doGet(request, response);
}
}