JSP(6)簡單購物車實現
兩個jsp頁面之間跳轉需要通過Servlet控制器實現
1 建立資料庫表
-- 建立一個序列,使book的id自增長
create sequence book_seq
start with 1
increment by 1
minvalue 1
maxvalue 99999999999999
nocycle
nocache
-- 建立一個序列,使orders的id自增長
create sequence orders_seq
start with 1
increment by 1
minvalue 1
maxvalue 9999999999
nocycle
nocache
-- 使用者表
create table user_(
id number primary key,
name varchar2(50) not null,
pwd varchar2(50) not null,
email varchar2(100) not null,
tel varchar2(20) not null,
grade number(2) default 1 not null
)
insert into user_ values(100, 'jiaozl', '111', '[email protected]', '110', 1 );
insert into user_ values(101, 'xiaoming', '111', '[email protected]', '120', 1);
insert into user_ values(102, '小紅', '111', '[email protected]', '130', 1);
-- 商品表
create table book(
id number primary key,
name varchar2(50) not null,
author varchar2(50) not null,
publishHouse varchar2(100 ) not null,
price number not null,
nums number default 1000 not null
)
insert into book values(book_seq.nextval, 'jsp應用開發詳解', '小風', '電子工業出版社', 59, 100);
insert into book values(book_seq.nextval, 'java web服務開發', '譚美君', '電子工業出版社', 45, 100);
insert into book values(book_seq.nextval, 'Java程式設計思想', '小紅', '機械工業出版社', 99, 100);
insert into book values(book_seq.nextval, 'jsp程式設計指南', '王芳', '電子工業出版社', 19, 1000);
insert into book values(book_seq.nextval, 'j2ee 1.4應用開發詳解', '小賤', '電子工業出版社', 68, 100);
insert into book values(book_seq.nextval, 'j2ee企業級應用開發', '小菲', '電子工業出版社', 56, 1000);
insert into book values(book_seq.nextval, 'j2ee參考手冊', '小風', '電子工業出版社', 56, 1000);
insert into book values(book_seq.nextval, 'j2ee web服務開發', '順平', '電子工業出版社', 550, 100000);
-- 訂單表
-- 設計思路:為了避免資料冗餘,我們把公有的資訊,抽取出來建立一個單獨的表,把不共有的資訊,建一張單獨表。
create table orders(
id number primary key,
userId number references user_(id),
totalPrice number default 0 not null,
orderDate date default sysdate not null
)
create table ordersItem(
id number primary key,
ordersId number references orders(id),
bookId number references book(id),
bookNum number default 0 not null
)
2 建立login、hall、showCart等jsp頁面
通過Servlet控制器實現業務化跳轉
<body>
<h1>登入介面</h1>
<form action="/myshopping/GotoHallUI" method="post">
<table border="1">
<tr>
<td>使用者名稱</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>密 碼</td>
<td><input type="password" name="passwd" /></td>
</tr>
<tr>
<td><input type="submit" value="登入" /></td>
<td><input type="reset" value="清空重輸" /></td>
</tr>
</table>
</form>
</body>
<body>
<h1>歡迎訪問購物大廳</h1>
<table border="1">
<tr><th>書名</th><th>價格</th><th>出版社</th><th>點選購買</th></tr>
<%
ArrayList<Book> books = (ArrayList<Book>) request.getAttribute("books");
for(int i =0; i<books.size(); i++ ) {
Book book = books.get(i);
%>
<tr><td><%=book.getName() %></td><td><%=book.getPrice() %></td><td><%=book.getPublishHouse() %></td><td><a href="#">購買</a></td></tr>
<%
}
%>
<tr><td colspan="4"><input type="button" value="檢視購物車" /></td></tr>
</table>
<a href="/myshopping">返回重新登入</a>
</body>
<body>
<h1>我的購物車</h1>
<a href="/myshopping/GotoHallUI"> 返回購物大廳 </a>
<form action="/myshopping/ShoppingClServlet?type=update&" method="post">
<table border="1" style="border-collapse: collapse; width: 600px; ">
<tr><th>bookID</th><th>書名</th><th>價格</th><th>出版社</th><th>數量</th><th>刪除</th></tr>
<%
ArrayList<Book> books = (ArrayList<Book>) request.getAttribute("books");
for(int i=0; i<books.size(); i++) {
Book book = books.get(i);
%>
<tr>
<%-- 提交表單時,獲取表格中資訊 -->
<td><%=book.getId() %><input type="hidden" name="id" value="<%=book.getId() %>" /></td>
<td><%=book.getName() %></td>
<td><%=book.getPrice() %></td><td><%=book.getPublishHouse() %></td>
<td><input type="text" name="booknum" value="<%=book.getShoppingNum() %>" />本</td>
<td><a href="/myshopping/ShoppingClServlet?type=del&id=<%=book.getId() %>">刪除</a></td>
</tr>
<%
}
%>
<tr>
<td colspan="6"><input type="submit" value="update" ></td>
</tr>
<tr>
<td colspan="6">購物車的總價格:${ totalPrice } 元</td>
</tr>
</table>
</form>
</body>
3 GotoHallUI 實現login.jsp—->hall.jsp
package com.test.controller;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import com.test.domain.Users;
import com.test.service.UserService;
public class GotoHallUI extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
// 取出從登陸頁面傳遞的使用者名稱和密碼
String uid = request.getParameter("uid");
String p = request.getParameter("passwd");
Users loginUser = new Users(Integer.parseInt(uid), p);
UserService userService = new UserService();
Boolean b = userService.checkUser(loginUser);
if(b) {
// 建立購物車
MyCart mycart = new MyCart();
// 在哪裡都能訪問到
request.getSession().setAttribute("mycart", mycart);
// 獲取書籍資訊
BookService bookService = new BookService();
ArrayList<com.test.domain.Book> books = bookService.getAllBook();
request.setAttribute("books", books);
// 跳轉
request.getRequestDispatcher("WEB-INF/hall.jsp").forward(request, response);;
} else {
request.getRequestDispatcher("WEB-INF/login.jsp").forward(request, response);;
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
相關推薦
JSP(6)簡單購物車實現
兩個jsp頁面之間跳轉需要通過Servlet控制器實現 1 建立資料庫表 -- 建立一個序列,使book的id自增長 create sequence book_seq start with
線程池(6)簡單創建線程3種實現
all () exceptio trace png mbo alt for ava 3種實現:thread、runnable、callable 1、thread @Slf4j public class MyThread extends Thread { @Ove
C++菜鳥學習筆記系列(6)——簡單標頭檔案的編寫
C++菜鳥學習筆記系列(6) ——簡單標頭檔案的編寫 我們在上一篇部落格 C++菜鳥學習筆記系列(5)中已經敘述了一些關於在C++中建立自己的資料型別的一些方法,但是隨之而來的一個問題是我們在建立了一個自定義類之後經常還要在其他的檔案中使用同樣的類,這時候我們可
【原創】大資料基礎之Spark(6)rdd sort實現原理
spark 2.1.1 spark中可以通過RDD.sortBy來對分散式資料進行排序,具體是如何實現的?來看程式碼: org.apache.spark.rdd.RDD /** * Return this RDD sorted by the given key function.
C++開發人臉性別識別教程(6)——通過SVM實現性別識別
上一篇教程中我們介紹瞭如何使用OpenCv封裝的FaceRecognizer類實現簡單的人臉性別識別,這裡我們為大家提供另外一種基本的性別識別手段——支援向量機(SVM)。 支援向量機在解決二分類問題方面有著強大的威力(當然也可以解決多分類問題),性別識別是典型
C++設計模式-使用Qt框架模擬策略模式(Strategy)+簡單工廠實現商場促銷
商城促銷: 1.簡單工廠模式:客戶端認識兩個類,CashSuper與CashFactory 2.簡單工廠模式 + 策略模式:客戶端只要認識CashContext就可以了,更加降低耦合性 策略模式解析: 策略模式是一種定義一系列演算法的方法,從概念上看,所有這些演算法完成的都
python(4)- 簡單練習:python實現購物車的優化
list x11 int 退出 .html htm src keyword 結算 簡單版本,鏈接如下: http://www.cnblogs.com/c-x-m/p/7819220.html 購物車程序優化題目要求: 1. 用戶退出時打印商品列表時,按以下格式
(6)基於hadoop的簡單網盤應用實現2
一、呼叫hadoop api實現檔案的上傳、下載、刪除、建立目錄和顯示功能 (1)新增必要的hadoop jar包。 A、首先將Hadoop1.1.2.tar.gz解壓到某一個磁碟下。 B、右鍵選擇工程,選擇build path...., build configu
機器學習與Tensorflow(6)——LSTM的Tensorflow實現、Tensorboard簡單實現、CNN應用
最近寫的一些程式以及做的一個關於軸承故障診斷的程式 最近學習進度有些慢 而且馬上假期 要去補習班 去賺下學期生活費 額。。。。 抓緊時間再多學習點 1.RNN遞迴神經網路Tensorflow實現程式 1 import os 2 os.environ['TF_CPP_M
JSP(3)使用jsp實現簡單的計算器
1 目錄結構 2 程式碼 <%@ page language="java" import="java.util.*" pageEncodi
實現一個簡單的直譯器(6)
譯自:https://ruslanspivak.com/lsbasi-part6/ (已獲得作者授權) 今天,我們通過將帶括號的表示式新增到語法,並實現一個能夠計算任意深度巢狀表示式的直譯器來結束對算術表示式的討論。 讓我們開始吧! 首先,讓我們修改語法以支援括號內的表示式,正如在第5部分中所記得的那樣
springBoot(6):web開發-模板引擎jsp
spring boot 一、新建工程 註意新建的工程下沒有webapp目錄eclipse下會自動創建webapp目錄這裏我們需要自動創建一個webapp目錄並創建WEB-INF。 對ServletInitializer.java進行說明 1、這個類相當於我們以前的web.xml 2、只有3.0以上才
【Java】 Spring 框架初步學習總結(一)簡單實現 IoC 和 AOP
1.0 其中 表示 只需要 第一篇 否則 info fin pojo Spring 是一個開源的設計層面的輕量級框架,Spring 的好處網上有太多,這裏就不在贅述。 IoC 控制反轉和 AOP 面向切面編程是 Spring 的兩個重要特性。 IoC(Inver
Java併發程式設計(6):Runnable和Thread實現多執行緒的區別(含程式碼)
Java中實現多執行緒有兩種方法:繼承Thread類、實現Runnable介面,在程式開發中只要是多執行緒,肯定永遠以實現Runnable介面為主,因為實現Runnable介面相比繼承Thread類有如下優勢: 1、可以避免由於Java的單繼承特性而帶來的侷限; 2、增強程式的健壯性,程式碼能夠被多個執行
Java並發編程(6):Runnable和Thread實現多線程的區別(含代碼)
線程休眠 ket out dde 可能 休眠 stat for oid Java中實現多線程有兩種方法:繼承Thread類、實現Runnable接口,在程序開發中只要是多線程,肯定永遠以實現Runnable接口為主,因為實現Runnable接口相比繼承Thread類有如下優
深度學習(一)——deepNN模型實現攝像頭實時識別人臉表情(C++和python3.6混合程式設計)
一、背景介紹 最近需要做人臉識別方向的東西,就被分配了新的任務,利用攝像頭實時檢測人臉表情,並製作成一個小軟體,這裡當然要用C++實現,並用C++做成一個介面。 由於博主之前用python做過類似的小程式,因此這裡的模型實現主要採用了python,為了用C++實現介面,這裡採用C++呼叫py
簡單圖形程式設計的學習(2)---點 Qt實現
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Chapter 6 連結串列(上):如何實現LRU快取淘汰演算法?
快取淘汰策略: 一、什麼是連結串列? 1.和陣列一樣,連結串列也是一種線性表。 2.從記憶體結構來看,連結串列的記憶體結構是不連續的記憶體空間,是將一組零散的記憶體塊串聯起來,從而進行資料儲存的資料結構。 3.連結串列中的每一個記憶體塊被稱為節點Node。節點除了儲存資料外,還需記錄鏈
Chapter 6 鏈表(上):如何實現LRU緩存淘汰算法?
查詢 申請 簡單 刪除數據 地址 nod 常用 next 相同 緩存淘汰策略: 一、什麽是鏈表? 1.和數組一樣,鏈表也是一種線性表。 2.從內存結構來看,鏈表的內存結構是不連續的內存空間,是將一組零散的內存塊串聯起來,從而進行數據存儲的數據結構。 3.鏈表中的每一個內
SpringCloud(一) 用springboot實現簡單服務呼叫
分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!