Servlet学习笔记---用Session做简单买书网站
2016-08-27 20:54
253 查看
无论是哪种方式,Book都相同
Book类
如果用户限制了Cookie,便要通过URL来携带图书信息。
pay.java
为解决此问题,便需要重定向。
buy.java中修改代码:
上述方案,还有储存问题,就是用户购买了书籍后,退出浏览器,重新查看,购物车没有选过的书籍。
Book类
class Book { String id; String name; String description; private static Map<String,Book> map=new LinkedHashMap(); static{ map.put("1",new Book("1","javaweb","a good book!")); map.put("2",new Book("2","spring","a good book!")); map.put("3",new Book("3","jsp","a good book!")); } public static Map<String,Book> getMap() { return map; } public Book(String id, String name, String description) { super(); this.id = id; this.name = name; this.description = description; } public Book() { super(); // TODO Auto-generated constructor stub } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }最初方案:
如果用户限制了Cookie,便要通过URL来携带图书信息。
pay.java
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); Writer out=response.getWriter(); HttpSession sess=request.getSession(false); if(sess==null) { out.write("您未购买任何书"); return ; } String id=request.getParameter("id"); Map<String,Book>map=Book.getMap(); Book book=map.get(id); LinkedList<Book> link=(LinkedList) sess.getAttribute("booklist"); if(link==null) { link=new LinkedList<Book>(); } link.add(book); sess.setAttribute("booklist", link); out.write("您已购买如下书籍:<br/>"); for(Book b:link) { out.write(b.getName()+"该书"+book.getDescription()+"<br/>"); } }buy.java
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); Writer out=response.getWriter(); HttpSession sess=request.getSession(); Map<String,Book>map=Book.getMap(); out.write("本网站有以下书籍:<br/>"); for(Map.Entry<String, Book> entry:map.entrySet()) { Book book=entry.getValue(); out.write(book.getName()+"<a href='"+"/SessionShop/servlet/Pay?id="+book.getId()+"'>购买</a><br/>"); } }这种方案问题是每次一刷新,都会添加一件物品进购物单。
为解决此问题,便需要重定向。
buy.java中修改代码:
for(Map.Entry<String, Book> entry:map.entrySet()) { Book book=entry.getValue(); out.write(book.getName()+"<a href='"+"/SessionShop/servlet/mid?id="+book.getId()+"'>购买</a><br/>"); }mid.java来处理数据加入,重定向到pay.java
response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); Writer out=response.getWriter(); HttpSession sess=request.getSession(false); if(sess==null) { out.write("您未购买任何书"); return ; } String id=request.getParameter("id"); Map<String,Book>map=Book.getMap(); Book book=map.get(id); LinkedList<Book> link=(LinkedList) sess.getAttribute("booklist"); if(link==null) { link=new LinkedList<Book>(); } link.add(book); sess.setAttribute("booklist", link); response.sendRedirect("/SessionShop/servlet/Pay");pay.java只是展示。
上述方案,还有储存问题,就是用户购买了书籍后,退出浏览器,重新查看,购物车没有选过的书籍。
相关文章推荐
- servlet学习笔记3——用户登录网站(通过session验证登陆用户)
- servlet学习笔记3——用户登录网站(通过session验证登陆用户)
- C#网站登录学习笔记(一):登录简单网站
- servlet学习笔记7——网站框架的改进
- Java学习笔记·Servlet互相传递参数简单实例
- Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期
- 20160410servlet学习笔记session与cookie对比与分析
- servlet学习笔记1——用户登录网站(servlet1.0)
- Ruby学习笔记2 : 一个简单的Ruby网站,搭建ruby环境
- 【CI学习笔记】简单的session实例--添加与读取session
- Servlet学习笔记--统计网站的访问量(jsp/servlet)
- Servlet学习笔记--生成网站表单验证码
- java WEB学习笔记32:HttpSession 接口常用方法 及 HttpServletRequest接口中的Session方法 Demo
- servlet学习笔记4——用户登录网站(数据库验证)
- Python学习笔记24:Django搭建简单的博客网站(二)
- Servlet与Jsp学习笔记--4、Session
- servlet学习笔记5——分页实现(登录网站的完善)
- Servlet学习笔记(七):Session详解
- Python学习笔记23:Django搭建简单的博客网站(一)
- 20160410servlet学习笔记网站访问次数计数器