MVC简易购物车项目--购物大厅

前面用户验证成功以后跳转到hall.jsp,展示商品

hall.jsp

<%@ page language="java" import="java.util.*,com.wxh.domain.*"  contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


    

欢迎来到购物大厅

<% //取出request中的那个Araylist ArrayList al=(ArrayList)request.getAttribute("books"); for(int i=0;i <% } %>
书名价格出版社点击购买
<%=book.getName()%><%=book.getPrice() %><%=book.getPublishHouse() %> 点击购买

返回重新登录

在GoHallUI中已经给下一个页面hall.jsp准备要了显示的数据

调用了BookService类

首先

Book.java

package com.wxh.domain;

public class Book {
	private int id;
	private String name;
	private String publishHouse;
	private double price;
	private int nums; //该书的库存
	private int shoppingNum=1;	//购买的数量
	private String author;	
	
	public int getShoppingNum() {
		return shoppingNum;
	}
	public void setShoppingNum(int shoppingNum) {
		this.shoppingNum = shoppingNum;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPublishHouse() {
		return publishHouse;
	}
	public void setPublishHouse(String publishHouse) {
		this.publishHouse = publishHouse;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public int getNums() {
		return nums;
	}
	public void setNums(int nums) {
		this.nums = nums;
	}	
}
BookService.java

package com.wxh.service;
import java.util.ArrayList;
import com.wxh.domain.Book;
import com.wxh.utils.SqlHelper;

//这是一个业务逻辑类,用于处理与book表相关的业务,各司其职
public class BookService {	
	
	//根据书的编号,返回一个Book
	public Book getBookById(String id){
		Book book=new Book();
		String sql="select * from book where id=?";
		String paras[]={id};
		ArrayList al=new SqlHelper().executeQuery(sql, paras);
		if(al.size()==1){
			Object[] obj=(Object[])al.get(0);			
			book.setId(Integer.parseInt(obj[0].toString()));
			book.setName(obj[1].toString());
			book.setAuthor(obj[2].toString());
			book.setPublishHouse(obj[3].toString());
			book.setPrice(Float.parseFloat(obj[4].toString()));
			book.setNums(Integer.parseInt(obj[5].toString()));					
		}
		return book;
	}
	
	
	//得到所有的书籍信息(分页)
	public ArrayList getAllBook(){
		String sql="select * from book where 1=?";
		String paras[]={"1"};
		ArrayList al=new SqlHelper().executeQuery(sql, paras);
		ArrayList newAl=new ArrayList();
		//二次业务封装
		for(int i=0;i

购买功能的实现

在GOHallUI中已经创建了一个购物车

MyCart.java

package com.wxh.service;
import java.util.*; 
import com.wxh.domain.Book;

//这个表示我的购物车
public class MyCart {	
	HashMap hm=new HashMap();
	
	//添加书的第二个方法
	public void addBook2(String id){
		if(hm.containsKey(id)){
			//hm已经有这个书
			Book book=hm.get(id);
			int shoppingNum=book.getShoppingNum();
			book.setShoppingNum(shoppingNum+1);
		}else{
			hm.put(id, new BookService().getBookById(id));
		}
	}
	
	//返回该购物车的总价格
	public float getTotalPrice(){
		float totalPrice=0.0f;
		
		//得到总价格
		ArrayList al=new ArrayList();
		Iterator it=hm.keySet().iterator();
		while(it.hasNext()){
			//取出书号
			String bookId=(String)it.next();
			//取出书号对应的Book
			Book book=hm.get(bookId);
			totalPrice+=book.getPrice()*book.getShoppingNum();
			
		}
		
		return totalPrice;
	}
	
	//添加书籍
	public void addBook(String id,Book book){
		if(hm.containsKey(id)){
			book=hm.get(id);
			//如果这本书已经购买过,shoppingNum数量+1
			int shoppingNum=book.getShoppingNum();
			book.setShoppingNum(shoppingNum+1);
			//hm.put(id, book);
		}else{		
		   hm.put(id, book);
		}
		
	}
	//删除书籍
	public void delBook(String id){
		hm.remove(id);
	}
	
	//更新书籍(对于购物车,更新所买书籍的数量)
	public void updateBook(String id,String nums){
		//取出id对应的Book
		Book book=hm.get(id);
		book.setShoppingNum(Integer.parseInt(nums));	
		
	}
	//显示该购物车中的所有商品信息
	public ArrayList showMyCart(){
		ArrayList al=new ArrayList();
		
		//遍历HashMap		
		Iterator it=hm.keySet().iterator();
		while(it.hasNext()){
			//取出key
			String id=(String)it.next();
			//取出Book
			Book book=hm.get(id);
			al.add(book);			
		}
		return al;
	}
	
	
	//清空书,清空购物车
	public void clearBook(){
		hm.clear();
	}

}
当点击 点击购买 链接时 提交给ShoppingClServlet处理

ShoppingClServlet.java

//该控制器处理用户购买商品的请求
public class ShoppingClServlet extends HttpServlet {	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		//接收type值,区分用户希望做什么,del,update,add
		String type=request.getParameter("type");
		if(type.equals("del")){
			//说明用户要删除商品
			//接收用户想购买的商品的id
			String id=request.getParameter("id");
			//得到购物车(从session中取得购物车)
			MyCart myCart=(MyCart)request.getSession().getAttribute("myCart");
			myCart.delBook(id);
			//把要显示的商品信息放入request
			request.setAttribute("bookList", myCart.showMyCart());
			
			//跳回showMyCart.jsp
			request.getRequestDispatcher("/WEB-INF/showMyCart.jsp").forward(request, response);
			
		}else if(type.equals("add")){
			//接收用户想购买的商品的id		
			String id=request.getParameter("id");
			System.out.println(id);
			
			//什么时候创建购物车对象(当用户登录成功后,为他创建一个购物车)
			//取出购物车,并添加书到购物车中
			MyCart myCart=(MyCart)request.getSession().getAttribute("myCart");			
			//相当于把商品加到购物车
			myCart.addBook2(id);		
			/*
			//把要显示的数据放入request,准备显示。
			request.setAttribute("bookList", myCart.showMyCart());
			
			request.setAttribute("totalPrice", myCart.getTotalPrice()+"");
			//跳转到显示我的购物车去
			request.getRequestDispatcher("/WEB-INF/showMyCart.jsp").forward(request, response);
			*/
			//为了防止某个页面刷新,我们可以用sendredirect()
			response.sendRedirect("/shopping/GoShowMyCart");
			
			
		}else if(type.equals("update")){
			//更新
			//判断有没有书籍		
			
			//得到用户希望更新的书号和数量
			String bookIds[]=request.getParameterValues("id");
			//得到每本书的数量
			String nums[]=request.getParameterValues("booknum");
			MyCart myCart=(MyCart)request.getSession().getAttribute("myCart");
			for(int i=0;i

————摘自《韩顺平细说jsp》



你可能感兴趣的:(JavaWeb综合设计)