Cookie模拟查看书的历史记录
2019-05-22 / JAVA / 1141 次围观 / 0 次吐槽 /
创建一个书的模型

模仿数据库写一个模型
public class DBUtil {
private static Map<Integer,Book> bookMap = new HashMap<Integer,Book>();
//添加书资源
static{
bookMap.put(1, new Book(1,"book1","作者","888"));
bookMap.put(2, new Book(2,"book2","作者","888"));
bookMap.put(3, new Book(3,"book3","作者","888"));
bookMap.put(4, new Book(4,"book4","作者","888"));
bookMap.put(5, new Book(5,"book5","作者","888"));
}
//获取全部书籍
public static Map<Integer,Book> getAllBook(){
return bookMap;
}
//通过ID获取书籍
public static Book findBookById(Integer id) {
return bookMap.get(id);
}
}搜索全部书籍:showAllBookServelt
@WebServlet("/showAllBookServlet")
public class showAllBookServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().write("图书列表 <br/>");
//显示书籍列表
for(Entry<Integer, Book> entry :DBUtil.getAllBook().entrySet()) {
String html = "<a href='"+req.getContextPath()+"/ViewBookServlet?id="+entry.getKey()+"'>"+entry.getValue().getName()+"</a><br/>";
resp.getWriter().write(html);
}
//显示最近访问记录
resp.getWriter().write("最近访问 记录<br/>");
Cookie[] cookies = req.getCookies();
if(cookies != null) {
for(Cookie cookie : cookies) {
if("historyBookIds".equals(cookie.getName())) {
String strId = cookie.getValue();
String[] ids = strId.split("-");
for(String id : ids) {
String html = "<a href='"+req.getContextPath()+"/ViewBookServlet?id="+id+"'>"+DBUtil.findBookById(Integer.parseInt(id)).getName()+"</a><br/>";
resp.getWriter().write(html);
}
}
}
}
}
}书籍信息:ViewBookServlet
@WebServlet("/ViewBookServlet")
public class ViewBookServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
//获取ID
String Str_id = req.getParameter("id");
resp.getWriter().write("书籍ID:"+Str_id+"<br/>");
//查书籍
Book book = DBUtil.findBookById(Integer.parseInt(Str_id));
resp.getWriter().write(book.toString());
//书ID存cookie
Cookie[] cookies = req.getCookies();
if(cookies == null) {
//未传cookie,生成一个cookie
Cookie cookie = new Cookie("historyBookIds",Str_id);
cookie.setMaxAge(60*60);
resp.addCookie(cookie);
}else {
//有传cookie,拼接bookid
for(Cookie cookie : cookies) {
if("historyBookIds".equals(cookie.getName())) {
String historyBookIds = cookie.getValue();
//判断是否有当前ID
if(historyBookIds.equals(Str_id)) return;//如果第一个相同,则不执行下面代码
if(historyBookIds.startsWith(Str_id)) {
historyBookIds = historyBookIds.replaceAll(Str_id + "-", "");
}else {
historyBookIds = historyBookIds.replaceAll("-" + Str_id, "");
}
//拼接
historyBookIds += "-" + Str_id;
System.out.println("访问过ID"+historyBookIds);
//响应客户端
cookie.setValue(historyBookIds);
cookie.setMaxAge(60*60);
resp.addCookie(cookie);
}
}
}
}
}- 上一篇:Cookie记住登陆用户名
- 下一篇:Session简单购物车实现
Powered By Cheug's Blog
Copyright Cheug Rights Reserved.