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
BookService.javapackage 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; } }
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.*