1. 程式人生 > >MVC簡易購物車專案--購物大廳

MVC簡易購物車專案--購物大廳

前面使用者驗證成功以後跳轉到hall.jsp,展示商品

hall.jsp

<%@ page language="java" import="java.util.*,com.wxh.domain.*"  contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body style="text-align:center; margin:0 auto; ">
    <h1>歡迎來到購物大廳</h1>
     <table border="1"style="border-collapse: collapse; width: 500px"  align="center">
    <tr><th>書名</th><th>價格</th><th>出版社</th><th>點選購買</th></tr>
    
    <%
    //取出request中的那個Araylist
    ArrayList al=(ArrayList)request.getAttribute("books");
    for(int i=0;i<al.size();i++){
    Book book=(Book)al.get(i);
    %>    
  
    <tr><td><%=book.getName()%></td><td><%=book.getPrice() %></td><td><%=book.getPublishHouse() %></td>
   	<td>
     <a href="/shopping/ShoppingClServlet?type=add&id=<%=book.getId()%>" >點選購買</a> 
    </td>
    </tr>    
    <%
        }    
    %>   
   
    <tr align="center"><td colspan="4"><input type="button" value="檢視購物車"  onclick="window.location.href='/shopping/ShoppingClServlet?type=show';"></td></tr>    
    </table>
    <hr/>
    <a href="/shopping/">返回重新登入</a>
  </body>
</html>

在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<Book> newAl=new ArrayList<Book>();
		//二次業務封裝
		for(int i=0;i<al.size();i++){			
			Object obj[]=(Object[])al.get(i);
			Book book=new Book();
			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()));
			newAl.add(book);
		}
		return newAl;		
	}
}

購買功能的實現

在GOHallUI中已經建立了一個購物車

MyCart.java

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

//這個表示我的購物車
public class MyCart {	
	HashMap<String,Book> hm=new HashMap<String,Book>();
	
	//新增書的第二個方法
	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<Book> al=new ArrayList<Book>();
		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<Book> al=new ArrayList<Book>();
		
		//遍歷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<bookIds.length;i++){
				//更新購物車
				myCart.updateBook(bookIds[i], nums[i]);
			}
			//跳轉回我的購物車
			//把要顯示的資料放入request,準備顯示。
			request.setAttribute("bookList", myCart.showMyCart());
			
			request.setAttribute("totalPrice", myCart.getTotalPrice()+"");
			//跳轉到顯示我的購物車去
			request.getRequestDispatcher("/WEB-INF/showMyCart.jsp").forward(request, response);	
		}	
	}	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}
}

————摘自《韓順平細說jsp》

相關推薦

MVC簡易購物車專案--購物大廳

前面使用者驗證成功以後跳轉到hall.jsp,展示商品 hall.jsp <%@ page language="java" import="java.util.*,com.wxh.domain.*" contentType="text/html; charset=U

Python 練習1——簡易購物車

數字類型 數字 shopping enum off odi for in mac pro ping 簡易購物車用於了解購物車的大致原理,利用Python實現簡易購物車的基本功能,即:用戶將所選擇的商品放入購物車中,結算時自動輸出所購買商品及所剩余額。 # -*- codin

python--簡易購物車實現

item [0 不足 while product 商品 () 用戶 int 目標要求: 1、用戶輸入購物預算 2、打印商品清單,由用戶選擇,預算夠則購買,不夠則提示 3、輸入q,退出程序 4、購物結束,顯示購買的東西和余額 實現: 1、用列表存儲商品及價格信息 2、建立空列

ios12--簡易購物車

clas rem uibutton logs nbsp 練習 cgrect 多余 ets Assets.xcassets圖片是拖到右邊裏面去的。 // // ViewController.m // 03-綜合練習 // #import "ViewControll

簡易購物車的程序

提示 pre 全部 打印 是否 出現 lar 負數 app # 輸入工資:# 出現列表選購商品# 0.咖啡:223# 1.碳酸飲料 :105# 2.茶飲:59# 3.奶制品:33# 4.礦泉水:18# 輸入商品編號# 打印商品,余額# 提示是否繼續編號購買或者輸入quit退

Python學習第二周-簡易購物車練習

style 二周 ubi elif eas phone there ase hone 1 list = ((1,‘iPhone X‘,8300),(2,‘iPad Pro‘,4600),(3,‘IBM z10‘,50000),(4,‘Coffee‘,30)) 2 pr

8 EL、JSTL、MVC購物車、驗證碼

dispatch test war msg 存在 .get 生成隨機數 框架 輸入驗證碼 1.EL表達式 目的:從作用域中取出共享數據 ${p.屬性名稱} 使用EL獲取當前應用的上下文路徑 ${pageContext.getRequest().get

python_day06_數據類型(元組、字典)與簡易購物車

support tuple mes family nbsp 方法 只有一個 取值 for 一、元組 1.用途 元組是不可變的列表,能存多個值,若多個值只有取的需求,而沒有改的需求,那麽用元組最合理,因為列表占用的內存比元組大 2.定義方式 在()內用逗號隔開,可以存放任意類

簡易購物車介面,實現全屏,重新整理,提交提醒

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> tr

用Java Map相關知識實現簡易購物車功能

實現購物車功能 問題:實現一個購物車功能 分析:要實現這個功能,可以建立三個類,分別是Product商品類,ShopCart購物車類,Exercise測試類。Product類,裡面描述商品的一些基本屬性,編號,名稱,單價。 下面演示如何用程式碼實現需求。先定義一個商品類。 package

Java servlet 實現的簡易購物車

首頁 2.購買頁 3.購物車頁           1. 首頁程式碼 傳送一個post請求 <!DOCTYPE html><html lang="en"><head> <meta c

MVC】.Net實踐(一)—建立mvc框架的專案和實體模型

一、 建立MVC框架的專案 (1)像新增平常專案一樣新增一個web應用程式,檔案—>新建—>專案 (3)接著選擇MVC (4)這樣就建好一個MVC框架的專案了 二、連線資料庫 建立

購物車專案 複雜版本.待簡化

1 # -*- coding: utf-8 -*- 2 # @Time : 2018/12/23 13:46 3 # @Author : Endless-cloud 4 # @Site : 5 # @File : 重寫購物車專案.py 6 # @S

js製作的簡易購物車

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> &l

asp.net mvc設定啟動專案

mvc專案建立完後,點選啟動專案,在瀏覽器總是顯示localhost/Views/Home/Index.cshtml。不能直接顯示localhost/Home/Index百度查了查,找到了解決方案。參考地址:https://bbs.csdn.net/topics/320155

【實戰】Spring+Spring MVC+Mybatis實戰專案之雲筆記專案

            【實戰】Spring+Spring MVC+Mybatis實戰專案之雲筆記專案一、專案簡介         1、專案概述雲筆記,是tmocc上的一個子專案,用於客戶進行線上學習記錄,分享,收藏筆記,以及參與社群活動。2.模組劃分 使用者模組:登入、註冊

Mac 下 IntelliJ idea建立Spring MVC的Maven專案的 練習

參考並部分複用:http://www.cnblogs.com/winner-0715/p/5294917.html 一、下載 IntellJ Idea    licenseserver address:   http://idea.iteblog.com/key.p

從零開始寫C# MVC框架之--- 專案結構

框架總分2個專案:Web開發專案、幫助類專案 (ZyCommon、Zy.Utilities)       1、ZyCommon,是Web開發專案結構。新建一個空解決方案,再建Data、Service、ZyWeb解決方案資料夾,把資料層、介面服務層、Web層區分開    

iOS 簡易購物車頁面的搭建

簡單購物車頁面的搭建 1.基礎頁面的搭建 在storyboard的cell中建立控制元件並進行約束,繼承自定義的AZWineCell 將cell中的子控制元件和自定義的AZWineCe

JSP-----------簡易購物車程式碼

第一步:顯示介面 <%@page import="web.model.Proc"%> <%@ page  contentType="text/html;charset=GBK" pageEncoding="GBK" import="java.util.*