cookie的案例最近浏览的书

一步:建一个书的数据库,用静态代码块实现,这样可以随在类一加载后就在内存中,不用随着构造函数每次都加载。

  要list所有书的方法,还有根据Id查询书的方法

private static HashMap<String, Book> bookMap = new HashMap<String, Book>();

static{
bookMap.put("1", new Book("1","西游记",998.0,"朴乾","一个和尚一头猪,一只猴子一个河童和一批马的故事"));
bookMap.put("2", new Book("2","水浒传",8.0,"刘德华","105个男人和3个女人的混乱的故事"));
bookMap.put("3", new Book("3","三国演义",98.0,"方老师","打来大去没完没了"));
bookMap.put("4", new Book("4","红楼梦",998.0,"郭富城","乱七八糟的故事"));
bookMap.put("5", new Book("5","金瓶梅",88.0,"武二郎","卖烧饼的故事"));
}
/**
* 获取所有书信息的方法
*/
public static HashMap<String, Book> getBookList(){
return bookMap;
}
/**
* 根据id获取书的方法
*/
public static Book getBook(String id){
return bookMap.get(id);

二部:遍历书在浏览器里展示

   点击查看书的详细

           展示浏览过的书


public class BookList extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//1.查询数据库获取书的信息
Map<String,Book> map = BookDao.getBookList();
//2.将书打印给浏览器
for(Map.Entry<String, Book> entry : map.entrySet()){
Book book = entry.getValue();
response.getWriter().write("<a href='"+request.getContextPath()+"/servlet/BookInfo?id="+book.getId()+"'>"+book.getName()+"</a><br>");
}
//3.打印经常看过的书
response.getWriter().write("<hr>曾今看过的书:<br>");
Cookie []  cs = request.getCookies();
Cookie findC = null;
if(cs!=null){
for(Cookie c : cs){
if("last".equals(c.getName())){
findC = c;
break;
}
}
}
if(findC == null){
response.getWriter().write("您还没有看过任何书!");
}else{
String [] ids =  findC.getValue().split(",");
for(String id : ids){
Book book = BookDao.getBook(id);
response.getWriter().write(book.getName()+"<br>");
}
}
}


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


}


}


三步:获取要查看书的Id

判读是否存在cookie的ID

如果没有则创建一个

如果有则,把书的id加入cookie值里面去。

public class BookInfo extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置字符码
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//1.获取当前要查询的书的详细信息
String id = request.getParameter("id");
Book book = BookDao.getBook(id);
//2.将详细信息打给浏览器展示
response.getWriter().write("<h1>书名:"+book.getName()+"</h1><hr>");
response.getWriter().write("<h3>作者:"+book.getAuth()+"</h3><br>");
response.getWriter().write("<h3>售价:"+book.getPrice()+"</h3><br>");
response.getWriter().write("<h3>详细信息:"+book.getDesc()+"</h3><br><hr>");
//3.写回一个cookie,last,保存最后看过的书
Cookie lastC = new Cookie("last","");
lastC.setPath(request.getContextPath());
lastC.setMaxAge(3600*24*30);

//--先获取之前看过的书,再拼接当前看的书,由此得到最后看过的三本书,最主要的思想:把cookie的值清空,重新赋值。
Cookie [] cs = request.getCookies();
Cookie findC = null;
if(cs!=null){
for(Cookie c : cs){
if("last".equals(c.getName())){
findC = c;
break;
}
}
}
if(findC == null){//之前没有看过别的书,则cookie里只放当前看的书的id即可
lastC.setValue(book.getId()+"");
}else{//有之前看过书的信息,则要进行计算,计算出最后看的三本书,输出
//1 -->2,1--> 2,1
//2,1-->3,2,1-->3,2,1
//3,2,1-->4,3,2-->4,3,2
//3,2,1-->2,3,1-->2,3,1
String [] infos = findC.getValue().split(",");
StringBuffer buffer = new StringBuffer();
buffer.append(book.getId()+",");
int count = 0;
for(int i=0;i<infos.length && count<2;i++){
if(!infos[i].equals(book.getId())){
buffer.append(infos[i]+",");
count++;
}
}
String info = buffer.substring(0, buffer.lastIndexOf(",")).toString();
//给cookie的值赋值
lastC.setValue(info);
}

response.addCookie(lastC);
}


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


}


}

内容概要:本文深入解析了扣子COZE AI编程及其详细应用代码案例,旨在帮助读者理解新一代低门槛智能体开发范式。文章从五个维度展开:关键概念、核心技巧、典型应用场景、详细代码案例分析以及未来发展趋势。首先介绍了扣子COZE的核心概念,如Bot、Workflow、Plugin、Memory和Knowledge。接着分享了意图识别、函数调用链、动态Prompt、渐进式发布及监控可观测等核心技巧。然后列举了企业内部智能客服、电商导购助手、教育领域AI助教和金融行业合规质检等应用场景。最后,通过构建“会议纪要智能助手”的详细代码案例,展示了从需求描述、技术方案、Workflow节点拆解到调试与上线的全过程,并展望了多智能体协作、本地私有部署、Agent2Agent协议、边缘计算插件和实时RAG等未来发展方向。; 适合人群:对AI编程感兴趣的开发者,尤其是希望快速落地AI产品的技术人员。; 使用场景及目标:①学习如何使用扣子COZE构建生产级智能体;②掌握智能体实例、自动化流程、扩展能力和知识库的使用方法;③通过实际案例理解如何实现会议纪要智能助手的功能,包括触发器设置、下载节点、LLM节点Prompt设计、Code节点处理和邮件节点配置。; 阅读建议:本文不仅提供了理论知识,还包含了详细的代码案例,建议读者结合实际业务需求进行实践,逐步掌握扣子COZE的各项功能,并关注其未来的发展趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值