JSP---用eclipe建立一个购物车添加遍历功能

**实现购物车案例
   1.创建Book封装图书信息:Book book=new Book();
   2.创建BookDB,模拟数据库,在里面保存图书
   3.提供图书的购买页面:ListBookServlet
   4.添加购物车:PurcharseServlet
   5.回显购物车图书信息:CartServlet
   如果浏览器禁用了cookie,咱们的购物车功能就不能实现了,因为session是基于cookie实现的。**

1、首先需要一个Book类 封装书籍

public class Book {
	String id;
	String name;
	
	public Book() {
	}

	public Book(String id, String name) {
		super();
		this.id = id;
		this.name = name;
	}

	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;
	}

}

2、模拟数据库BookDB
补充:Map是一个接口,即Interface Map<K-key,V-value>,其中key必须是唯一的且不能重复,当key相同时,后面的value值会覆盖之前的value值。
2.1 Map定义的一些通用的方法:
>>>1. 得到指定key的值:map.get(Object key);
>>>2. 判断此key是否含有value:isEmpty();
>>>3. 返回key中包含的键的视图:map.keySet();
>>>4. 将指定的key和值放进去:map.put(K key,V value);
Map接口有很多实现类:TreeMap,Hashtable,SortedMap,HashMap

     2.2 HashMap是基于哈希表的Map接口实现
	    1它是通过数组和指针结合实现的一个“链表散列”的数据结构,数组中的每一项又是一个链表。
	    2当再底层将key-value当成一个整体进行处理,这个整体就是一个entry对象。
public class BookDB {
	private static Map<String, Book> map = new LinkedHashMap<String, Book>();
	//往里面添加待售的书籍
	static {
		map.put("1", new Book("1", "c语言程序设计"));
		map.put("2", new Book("2", "数据结构"));
		map.put("3", new Book("3", "高等数学"));
		map.put("4", new Book("4", "线性代数"));
		map.put("5", new Book("5", "大数据"));
	}
	//得到所有图书
	public static Collection<Book> getAll() {
		return map.values();
	}
	//利用map的key,也就是图书的id得到某本书
	public static Book getBook(String id) {
		return map.get(id);
	}
}

3、后台搭建好了,则需要一个购买界面ListBookServlet

public class ListBookServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//处理相应的中文乱码
		response.setContentType("text/html;charset=utf-8");
		//1得到所有书籍信息
		Collection<Book> books = BookDB.getAll();
		//2回显到页面
		PrintWriter out = response.getWriter();
		out.print("以下是本网站所售的所有书籍:" + "<br/><br/>");
		//3遍历集合,把图书回显到页面
		for (Book b : books) {
			String name = b.getName();
			String id = b.getId();
		//4提供一个购买书籍的链接
			String url = "<a href='/chapter05/purcharse?id=" + id + "'>点击购买</a>";
			out.print("图书名称:" + name + "   " + url + "<br/><br/>");
		}
	}

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

}

4、实现添加到购物车的功能

public class PurcharseServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//处理相应的中文乱码问题
		response.setContentType("text/html;charset=utf-8");
		//2获取图书信息
		String id = request.getParameter("id");
		//3判断id是否存在
		if (id == null) {
			response.sendRedirect("/chapter05/list");
			return;
		}
		//3当图书已经购买时
		Book book = BookDB.getBook(id);
		//4把图书添加到购物车
		HttpSession session = request.getSession();
		List<Book> list = (List<Book>) session.getAttribute("cart");
		//5判断购物车是否存在,是不是首次购买
		if (list == null) {
			list = new ArrayList<Book>();
			session.setAttribute("cart", list);
		}
		//6把图书添加到购物车
		list.add(book);
		//7请求跳转到CartServlet
		//session基于自己创建的cookie完成效果;再浏览器关闭后,cookie对象还在,就能找到session
		Cookie cookie = new Cookie("JESSIONID", session.getId());
		cookie.setMaxAge(60 * 60 * 24);
		cookie.setPath("/chapter05");
		response.addCookie(cookie);
		//8跳转到cartServlet里面
		response.sendRedirect("/chapter05/cart");
	}

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

		doGet(request, response);
	}

}

5、回显购物车功能

public class CartServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//处理相应中文的乱码
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		//1得到购物车
		List<Book> cart = null;
		//2得到用户自己的session
		HttpSession session = request.getSession(false);
		//3自己定义一个flag,判断购物车里面是否有图书
		boolean cartFlag = true;
		if (session == null) {
			cartFlag = false;
		} else {
			cart = (List<Book>) session.getAttribute("cart");
			if (cart == null) {
				cartFlag = false;
			}
		}
		//4购物车里面有商品了
		if (!cartFlag) {
			out.print("抱歉,您的购物车没有图书,请购买:");
		} else {
		//5购物车遍历
			out.print("您所购买的书籍如下:" + "<br/>");
			for (Book b : cart) {
				out.print(b.getId() + "   " + b.getName() + "<br/>");
			}
		}
	}

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

		doGet(request, response);
	}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值