├── BookStore ├── lib │ ├── mail.jar │ ├── jstl-1.2.jar │ ├── xom-1.1.jar │ ├── activation.jar │ ├── ezmorph-1.0.6.jar │ ├── c3p0-0.9.2-pre1.jar │ ├── commons-io-1.4.jar │ ├── standard-1.1.2.jar │ ├── commons-lang-2.5.jar │ ├── itcast-tools-1.4.2.jar │ ├── json-lib-2.4-jdk15.jar │ ├── commons-dbutils-1.4.jar │ ├── mchange-commons-0.2.jar │ ├── commons-beanutils-1.8.3.jar │ ├── commons-logging-1.1.1.jar │ ├── commons-collections-3.2.1.jar │ ├── commons-fileupload-1.2.2.jar │ ├── mysql-connector-java-8.0.13.jar │ └── c3p0-oracle-thin-extras-0.9.2-pre1.jar ├── web │ ├── bg │ │ ├── bg_1.jpg │ │ ├── bg_2.jpg │ │ └── bg_3.jpg │ ├── images │ │ ├── all.png │ │ ├── b4.jpg │ │ ├── cart.png │ │ └── welcome.jpg │ ├── bank_img │ │ ├── abc.bmp │ │ ├── bc.bmp │ │ ├── bcc.bmp │ │ ├── bh.bmp │ │ ├── bj.bmp │ │ ├── ccb.bmp │ │ ├── cib.bmp │ │ ├── cmb.bmp │ │ ├── cmbc.bmp │ │ ├── dy.bmp │ │ ├── gf.bmp │ │ ├── hx.bmp │ │ ├── icbc.bmp │ │ ├── post.bmp │ │ ├── sfz.bmp │ │ ├── sh.bmp │ │ ├── shpd.bmp │ │ ├── zx.bmp │ │ ├── ningbo.bmp │ │ ├── pingan.bmp │ │ ├── guangda.bmp │ │ ├── nanjing.bmp │ │ ├── zheshang.bmp │ │ └── beijingnongshang.bmp │ ├── book_img │ │ ├── bg_1.jpg │ │ ├── bg_2.jpg │ │ ├── 8758723-1_l.jpg │ │ ├── 8991366-1_l.jpg │ │ ├── 9265169-1_l.jpg │ │ ├── 9317290-1_l.jpg │ │ ├── 20029394-1_l.jpg │ │ ├── 20285763-1_l.jpg │ │ ├── 20385925-1_l.jpg │ │ ├── 22722790-1_l.jpg │ │ └── 22788412-1_l.jpg │ ├── menu │ │ ├── img │ │ │ ├── jia.png │ │ │ └── jian.png │ │ ├── mymenu.css │ │ └── mymenu.js │ ├── fonts │ │ ├── Asap-Regular.ttf │ │ └── Audiowide-Regular.ttf │ ├── adminjsps │ │ ├── admin │ │ │ ├── index.jsp │ │ │ ├── body.jsp │ │ │ ├── top.jsp │ │ │ ├── msg.jsp │ │ │ ├── category │ │ │ │ ├── del.jsp │ │ │ │ ├── add.jsp │ │ │ │ ├── mod.jsp │ │ │ │ └── list.jsp │ │ │ ├── book │ │ │ │ ├── list.jsp │ │ │ │ ├── add.jsp │ │ │ │ └── desc.jsp │ │ │ ├── main.jsp │ │ │ ├── left.jsp │ │ │ └── order │ │ │ │ └── list.jsp │ │ ├── msg.jsp │ │ └── login.jsp │ ├── WEB-INF │ │ └── web.xml │ ├── index.jsp │ ├── jsps │ │ ├── order │ │ │ ├── send.jsp │ │ │ ├── msg.jsp │ │ │ ├── list.jsp │ │ │ └── desc.jsp │ │ ├── body.jsp │ │ ├── msg.jsp │ │ ├── user │ │ │ ├── login.jsp │ │ │ └── regist.jsp │ │ ├── left.jsp │ │ ├── top.jsp │ │ ├── book │ │ │ ├── desc.jsp │ │ │ └── list.jsp │ │ ├── main.jsp │ │ └── cart │ │ │ └── list.jsp │ ├── login.jsp │ ├── regist.jsp │ └── css │ │ └── style.css ├── src │ ├── jdbc.properties │ ├── rj │ │ └── bookstore │ │ │ ├── user │ │ │ ├── service │ │ │ │ ├── UserException.java │ │ │ │ └── UserService.java │ │ │ ├── web │ │ │ │ └── servlet │ │ │ │ │ ├── Servlet.java │ │ │ │ │ └── UserServlet.java │ │ │ ├── domain │ │ │ │ └── User.java │ │ │ └── dao │ │ │ │ └── UserDao.java │ │ │ ├── order │ │ │ ├── service │ │ │ │ ├── OrderException.java │ │ │ │ └── OrderService.java │ │ │ ├── entity │ │ │ │ ├── OrderItem.java │ │ │ │ └── Order.java │ │ │ ├── web │ │ │ │ └── servlet │ │ │ │ │ └── OrderServlet.java │ │ │ └── dao │ │ │ │ └── OrderDao.java │ │ │ ├── category │ │ │ ├── web │ │ │ │ └── servlet │ │ │ │ │ ├── admin │ │ │ │ │ ├── CategoryException.java │ │ │ │ │ └── AdminCategoryServlet.java │ │ │ │ │ └── CategoryServlet.java │ │ │ ├── domain │ │ │ │ └── Category.java │ │ │ ├── servlce │ │ │ │ └── CategoryService.java │ │ │ └── dao │ │ │ │ └── CategoryDao.java │ │ │ ├── admin │ │ │ ├── service │ │ │ │ └── AdminService.java │ │ │ ├── dao │ │ │ │ └── AdminDao.java │ │ │ ├── entity │ │ │ │ └── Admin.java │ │ │ └── web │ │ │ │ └── servlet │ │ │ │ └── AdminServlet.java │ │ │ ├── book │ │ │ ├── service │ │ │ │ └── BookService.java │ │ │ ├── web │ │ │ │ └── servlet │ │ │ │ │ ├── BookServlet.java │ │ │ │ │ └── admin │ │ │ │ │ ├── AdminBookServlet.java │ │ │ │ │ └── AdminAddBookServlet.java │ │ │ ├── domain │ │ │ │ └── Book.java │ │ │ └── dao │ │ │ │ └── BookDao.java │ │ │ ├── cart │ │ │ ├── entity │ │ │ │ ├── CartItem.java │ │ │ │ └── Cart.java │ │ │ └── web │ │ │ │ └── servlet │ │ │ │ └── CartServlet.java │ │ │ └── filter │ │ │ ├── Login1Filter.java │ │ │ ├── LoginFilter.java │ │ │ ├── Login2Filter.java │ │ │ └── Login3Filter.java │ ├── email_template.properties │ └── c3p0-config.xml ├── .idea │ ├── libraries │ │ ├── jstl_1_2.xml │ │ ├── standard_1_1_2.xml │ │ ├── mysql_connector_java_8_0_13.xml │ │ └── activation.xml │ ├── modules.xml │ ├── misc.xml │ ├── webContexts.xml │ ├── artifacts │ │ ├── BookStore_war.xml │ │ └── BookStore_war_exploded.xml │ ├── uiDesigner.xml │ └── workspace.xml ├── test │ └── Ttest01.java └── BookStore.iml └── README.md /BookStore/lib/mail.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/mail.jar -------------------------------------------------------------------------------- /BookStore/lib/jstl-1.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/jstl-1.2.jar -------------------------------------------------------------------------------- /BookStore/lib/xom-1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/xom-1.1.jar -------------------------------------------------------------------------------- /BookStore/web/bg/bg_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bg/bg_1.jpg -------------------------------------------------------------------------------- /BookStore/web/bg/bg_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bg/bg_2.jpg -------------------------------------------------------------------------------- /BookStore/web/bg/bg_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bg/bg_3.jpg -------------------------------------------------------------------------------- /BookStore/lib/activation.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/activation.jar -------------------------------------------------------------------------------- /BookStore/web/images/all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/images/all.png -------------------------------------------------------------------------------- /BookStore/web/images/b4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/images/b4.jpg -------------------------------------------------------------------------------- /BookStore/lib/ezmorph-1.0.6.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/ezmorph-1.0.6.jar -------------------------------------------------------------------------------- /BookStore/web/bank_img/abc.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/abc.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/bc.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/bc.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/bcc.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/bcc.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/bh.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/bh.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/bj.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/bj.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/ccb.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/ccb.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/cib.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/cib.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/cmb.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/cmb.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/cmbc.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/cmbc.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/dy.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/dy.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/gf.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/gf.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/hx.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/hx.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/icbc.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/icbc.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/post.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/post.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/sfz.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/sfz.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/sh.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/sh.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/shpd.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/shpd.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/zx.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/zx.bmp -------------------------------------------------------------------------------- /BookStore/web/book_img/bg_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/bg_1.jpg -------------------------------------------------------------------------------- /BookStore/web/book_img/bg_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/bg_2.jpg -------------------------------------------------------------------------------- /BookStore/web/images/cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/images/cart.png -------------------------------------------------------------------------------- /BookStore/web/menu/img/jia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/menu/img/jia.png -------------------------------------------------------------------------------- /BookStore/web/menu/img/jian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/menu/img/jian.png -------------------------------------------------------------------------------- /BookStore/lib/c3p0-0.9.2-pre1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/c3p0-0.9.2-pre1.jar -------------------------------------------------------------------------------- /BookStore/lib/commons-io-1.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/commons-io-1.4.jar -------------------------------------------------------------------------------- /BookStore/lib/standard-1.1.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/standard-1.1.2.jar -------------------------------------------------------------------------------- /BookStore/web/bank_img/ningbo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/ningbo.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/pingan.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/pingan.bmp -------------------------------------------------------------------------------- /BookStore/web/images/welcome.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/images/welcome.jpg -------------------------------------------------------------------------------- /BookStore/lib/commons-lang-2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/commons-lang-2.5.jar -------------------------------------------------------------------------------- /BookStore/lib/itcast-tools-1.4.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/itcast-tools-1.4.2.jar -------------------------------------------------------------------------------- /BookStore/lib/json-lib-2.4-jdk15.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/json-lib-2.4-jdk15.jar -------------------------------------------------------------------------------- /BookStore/web/bank_img/guangda.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/guangda.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/nanjing.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/nanjing.bmp -------------------------------------------------------------------------------- /BookStore/web/bank_img/zheshang.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/zheshang.bmp -------------------------------------------------------------------------------- /BookStore/web/fonts/Asap-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/fonts/Asap-Regular.ttf -------------------------------------------------------------------------------- /BookStore/lib/commons-dbutils-1.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/commons-dbutils-1.4.jar -------------------------------------------------------------------------------- /BookStore/lib/mchange-commons-0.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/mchange-commons-0.2.jar -------------------------------------------------------------------------------- /BookStore/web/book_img/8758723-1_l.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/8758723-1_l.jpg -------------------------------------------------------------------------------- /BookStore/web/book_img/8991366-1_l.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/8991366-1_l.jpg -------------------------------------------------------------------------------- /BookStore/web/book_img/9265169-1_l.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/9265169-1_l.jpg -------------------------------------------------------------------------------- /BookStore/web/book_img/9317290-1_l.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/9317290-1_l.jpg -------------------------------------------------------------------------------- /BookStore/lib/commons-beanutils-1.8.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/commons-beanutils-1.8.3.jar -------------------------------------------------------------------------------- /BookStore/lib/commons-logging-1.1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/commons-logging-1.1.1.jar -------------------------------------------------------------------------------- /BookStore/web/book_img/20029394-1_l.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/20029394-1_l.jpg -------------------------------------------------------------------------------- /BookStore/web/book_img/20285763-1_l.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/20285763-1_l.jpg -------------------------------------------------------------------------------- /BookStore/web/book_img/20385925-1_l.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/20385925-1_l.jpg -------------------------------------------------------------------------------- /BookStore/web/book_img/22722790-1_l.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/22722790-1_l.jpg -------------------------------------------------------------------------------- /BookStore/web/book_img/22788412-1_l.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/book_img/22788412-1_l.jpg -------------------------------------------------------------------------------- /BookStore/web/fonts/Audiowide-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/fonts/Audiowide-Regular.ttf -------------------------------------------------------------------------------- /BookStore/lib/commons-collections-3.2.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/commons-collections-3.2.1.jar -------------------------------------------------------------------------------- /BookStore/lib/commons-fileupload-1.2.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/commons-fileupload-1.2.2.jar -------------------------------------------------------------------------------- /BookStore/web/bank_img/beijingnongshang.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/web/bank_img/beijingnongshang.bmp -------------------------------------------------------------------------------- /BookStore/lib/mysql-connector-java-8.0.13.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/mysql-connector-java-8.0.13.jar -------------------------------------------------------------------------------- /BookStore/lib/c3p0-oracle-thin-extras-0.9.2-pre1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DaulFrank/BookStoreSystem/HEAD/BookStore/lib/c3p0-oracle-thin-extras-0.9.2-pre1.jar -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | 3 | -------------------------------------------------------------------------------- /BookStore/src/jdbc.properties: -------------------------------------------------------------------------------- 1 | jdbc.driver=com.mysql.cj.jdbc.Driver 2 | jdbc.url=jdbc:mysql://localhost:3306/news?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai 3 | jdbc.username=root 4 | jdbc.password=root -------------------------------------------------------------------------------- /BookStore/.idea/libraries/jstl_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /BookStore/.idea/libraries/standard_1_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/user/service/UserException.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.user.service; 2 | 3 | public class UserException extends Exception{ 4 | public UserException() { 5 | } 6 | 7 | public UserException(String message) { 8 | super(message); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /BookStore/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/order/service/OrderException.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.order.service; 2 | 3 | public class OrderException extends Exception { 4 | public OrderException() { 5 | } 6 | 7 | public OrderException(String message) { 8 | super(message); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /BookStore/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /BookStore/.idea/libraries/mysql_connector_java_8_0_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/category/web/servlet/admin/CategoryException.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.category.web.servlet.admin; 2 | 3 | public class CategoryException extends Exception{ 4 | public CategoryException() { 5 | } 6 | 7 | public CategoryException(String message) { 8 | super(message); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /BookStore/.idea/webContexts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /BookStore/src/email_template.properties: -------------------------------------------------------------------------------- 1 | host=smtp.163.com 2 | uname=root 3 | pwd=root 4 | from=2652618726@qq.com 5 | subject=\u8FD9\u662F\u6765\u81EAITCAST\u7F51\u4E0A\u4E66\u57CE\u7684\u6FC0\u6D3B\u90AE\u4EF6\uFF01 6 | content=\u70B9\u51FB\u8FD9\u91CC\u5B8C\u6210\u6FC0\u6D3B 7 | -------------------------------------------------------------------------------- /BookStore/.idea/artifacts/BookStore_war.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/out/artifacts/BookStore_war 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /BookStore/web/WEB-INF/web.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /BookStore/web/index.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Created by IntelliJ IDEA. 3 | User: Acer 4 | Date: 2020/5/31 5 | Time: 23:32 6 | To change this template use File | Settings | File Templates. 7 | --%> 8 | 9 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 10 | 11 | 12 | $Title$ 13 | 14 | 15 | 16 | <% 17 | response.sendRedirect("/BookStore/jsps/main.jsp"); 18 | %> 19 | 20 | 21 | -------------------------------------------------------------------------------- /BookStore/test/Ttest01.java: -------------------------------------------------------------------------------- 1 | import org.omg.CORBA.Object; 2 | 3 | import java.util.Arrays; 4 | 5 | public class Ttest01 { 6 | 7 | public static void main(String[] args) { 8 | 9 | MySet1 set = new MySet1(); 10 | 11 | set.add("a"); 12 | set.add("123"); 13 | 14 | System.out.println(set.get()); 15 | 16 | 17 | } 18 | } 19 | 20 | 21 | class MySet1{ 22 | private E value; 23 | public void add(E value) { 24 | this.value = value; 25 | } 26 | public E get() { 27 | return value; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/category/domain/Category.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.category.domain; 2 | 3 | public class Category { 4 | private String cid; 5 | private String cname; 6 | 7 | public Category(){} 8 | 9 | public Category(String cid, String cname) { 10 | this.cid = cid; 11 | this.cname = cname; 12 | } 13 | 14 | public String getCid() { 15 | return cid; 16 | } 17 | 18 | public void setCid(String cid) { 19 | this.cid = cid; 20 | } 21 | 22 | public String getCname() { 23 | return cname; 24 | } 25 | 26 | public void setCname(String cname) { 27 | this.cname = cname; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/admin/service/AdminService.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.admin.service; 2 | 3 | import rj.bookstore.admin.dao.AdminDao; 4 | import rj.bookstore.admin.entity.Admin; 5 | import rj.bookstore.user.domain.User; 6 | import rj.bookstore.user.service.UserException; 7 | 8 | public class AdminService { 9 | 10 | AdminDao adminDao = new AdminDao(); 11 | public Admin login(Admin form) throws UserException { 12 | 13 | Admin admin = adminDao.findByUsername(form.getAdminname()); 14 | 15 | if(admin == null) throw new UserException("用户名不存在"); 16 | 17 | if(!admin.getPassword().equals(form.getPassword())) { 18 | throw new UserException("密码错误!"); 19 | } 20 | 21 | return admin; 22 | 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /BookStore/src/c3p0-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jdbc:mysql://localhost:3306/bookstore?&useSSL=false&serverTimezone=UTC 6 | 7 | com.mysql.cj.jdbc.Driver 8 | root 9 | root 10 | 3 11 | 5 12 | 2 13 | 8 14 | 15 | 16 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/admin/dao/AdminDao.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.admin.dao; 2 | 3 | import cn.itcast.jdbc.TxQueryRunner; 4 | import org.apache.commons.dbutils.QueryRunner; 5 | import org.apache.commons.dbutils.handlers.BeanHandler; 6 | import rj.bookstore.admin.entity.Admin; 7 | import rj.bookstore.user.domain.User; 8 | 9 | import java.sql.SQLException; 10 | 11 | public class AdminDao { 12 | private QueryRunner qr = new TxQueryRunner(); 13 | 14 | /** 15 | * 通过姓名查找用户 16 | * 17 | * */ 18 | 19 | public Admin findByUsername(String username) { 20 | try{ 21 | String sql = "select * from adminuser where adminname = ?"; 22 | return qr.query(sql,new BeanHandler(Admin.class),username); 23 | }catch (SQLException e) { 24 | throw new RuntimeException(e); 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/body.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | My JSP 'body.jsp' starting page 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/book/service/BookService.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.book.service; 2 | 3 | import java.util.*; 4 | import rj.bookstore.book.dao.BookDao; 5 | import rj.bookstore.book.domain.Book; 6 | 7 | public class BookService { 8 | 9 | private BookDao bookDao = new BookDao(); 10 | 11 | 12 | public List findAll() { 13 | return bookDao.findAll(); 14 | } 15 | 16 | public List findByCategoryId(String id) { 17 | return bookDao.findByCategoryId(id); 18 | } 19 | 20 | public Book load(String bid) { 21 | return bookDao.findByBid(bid); 22 | } 23 | 24 | public void add(Book book) { 25 | bookDao.add(book); 26 | } 27 | 28 | public void delete(String bid) { 29 | bookDao.delete(bid); 30 | } 31 | 32 | public void edit(Book book) { 33 | bookDao.edit(book); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /BookStore/web/jsps/order/send.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | My JSP 'send.jsp' starting page 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 20 | 21 | 22 | 23 | This is my JSP page.
24 | 25 | 26 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/user/web/servlet/Servlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.user.web.servlet; 2 | 3 | import javax.servlet.ServletException; 4 | import javax.servlet.annotation.WebServlet; 5 | import javax.servlet.http.HttpServlet; 6 | import javax.servlet.http.HttpServletRequest; 7 | import javax.servlet.http.HttpServletResponse; 8 | import java.io.IOException; 9 | 10 | @WebServlet(urlPatterns = "/BookStore/Servlet") 11 | public class Servlet extends HttpServlet { 12 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 13 | doGet(request,response); 14 | } 15 | 16 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 17 | request.getSession().invalidate(); 18 | 19 | response.sendRedirect("/BookStore/index.jsp"); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /BookStore/web/jsps/order/msg.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | My JSP 'msg.jsp' starting page 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 19 | 20 | 21 | 22 |

${msg }

23 |
    24 | 25 |
  • ${link }
  • 26 |
    27 |
28 | 29 | 30 | -------------------------------------------------------------------------------- /BookStore/web/jsps/body.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | body 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/top.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | top 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 |

DaulFrank图书商城后台管理

-* 22 |

管理员:${sessionScope.session_user.adminname}

23 | 24 | 25 | -------------------------------------------------------------------------------- /BookStore/.idea/artifacts/BookStore_war_exploded.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/out/artifacts/BookStore_war_exploded 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/msg.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | My JSP 'mgs.jsp' starting page 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 22 | 23 |

${msg }

24 |
    25 | 26 |
  • ${link }
  • 27 |
    28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/msg.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | My JSP 'mgs.jsp' starting page 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 22 | 23 |

${msg }

24 |
    25 | 26 |
  • ${link }
  • 27 |
    28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/admin/entity/Admin.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.admin.entity; 2 | 3 | public class Admin { 4 | private String auid; 5 | private String adminname; 6 | private String password; 7 | 8 | public Admin(){} 9 | 10 | public Admin(String auid, String adminname, String password) { 11 | this.auid = auid; 12 | this.adminname = adminname; 13 | this.password = password; 14 | } 15 | 16 | public String getAuid() { 17 | return auid; 18 | } 19 | 20 | public void setAuid(String auid) { 21 | this.auid = auid; 22 | } 23 | 24 | public String getAdminname() { 25 | return adminname; 26 | } 27 | 28 | public void setAdminname(String adminname) { 29 | this.adminname = adminname; 30 | } 31 | 32 | public String getPassword() { 33 | return password; 34 | } 35 | 36 | public void setPassword(String password) { 37 | this.password = password; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /BookStore/web/jsps/msg.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | My JSP 'msg.jsp' starting page 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 19 | 20 | 21 | 22 |

${msg }

23 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/category/web/servlet/CategoryServlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.category.web.servlet; 2 | 3 | import cn.itcast.servlet.BaseServlet; 4 | import rj.bookstore.category.servlce.CategoryService; 5 | 6 | import javax.servlet.ServletException; 7 | import javax.servlet.ServletRequest; 8 | import javax.servlet.ServletResponse; 9 | import javax.servlet.annotation.WebServlet; 10 | import javax.servlet.http.HttpServlet; 11 | import javax.servlet.http.HttpServletRequest; 12 | import javax.servlet.http.HttpServletResponse; 13 | import java.io.IOException; 14 | 15 | @WebServlet(urlPatterns = "/CategoryServlet") 16 | public class CategoryServlet extends BaseServlet { 17 | 18 | private CategoryService categoryService = new CategoryService(); 19 | 20 | 21 | public String findAll(HttpServletRequest request, HttpServletResponse response) { 22 | 23 | request.setAttribute("categoryList",categoryService.findAll()); 24 | 25 | return "f:/jsps/left.jsp"; 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/cart/entity/CartItem.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.cart.entity; 2 | 3 | import rj.bookstore.book.domain.Book; 4 | 5 | import java.math.BigDecimal; 6 | 7 | public class CartItem { 8 | 9 | private Book book; 10 | private int count; 11 | 12 | // 总计,处理了二进制误差问题 13 | public double getSubtotal(){ 14 | 15 | BigDecimal d1 = new BigDecimal(book.getPrice()); 16 | BigDecimal d2 = new BigDecimal(count); 17 | 18 | 19 | System.out.println(d1.multiply(d2).doubleValue()); 20 | 21 | return d1.multiply(d2).doubleValue(); 22 | } 23 | 24 | public CartItem(){} 25 | 26 | public CartItem(Book book, int count) { 27 | this.book = book; 28 | this.count = count; 29 | } 30 | 31 | public Book getBook() { 32 | return book; 33 | } 34 | 35 | public void setBook(Book book) { 36 | this.book = book; 37 | } 38 | 39 | public int getCount() { 40 | return count; 41 | } 42 | 43 | public void setCount(int count) { 44 | this.count = count; 45 | } 46 | 47 | 48 | } 49 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/filter/Login1Filter.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.filter; 2 | 3 | import rj.bookstore.user.domain.User; 4 | 5 | import javax.servlet.*; 6 | import javax.servlet.annotation.WebFilter; 7 | import javax.servlet.http.HttpServletRequest; 8 | import java.io.IOException; 9 | 10 | @WebFilter(urlPatterns = "/CartServlet") 11 | public class Login1Filter implements Filter { 12 | public void destroy() { 13 | } 14 | 15 | public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 16 | HttpServletRequest httpServletRequest = (HttpServletRequest) req; 17 | User user = (User) httpServletRequest.getSession().getAttribute("session_user"); 18 | 19 | if(user != null) { 20 | chain.doFilter(req, resp); 21 | } else { 22 | httpServletRequest.setAttribute("msg","您还没有登录哟!!!"); 23 | req.getRequestDispatcher("/login.jsp").forward(req,resp); 24 | } 25 | 26 | } 27 | 28 | public void init(FilterConfig config) throws ServletException { 29 | 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/filter/LoginFilter.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.filter; 2 | 3 | import rj.bookstore.user.domain.User; 4 | 5 | import javax.servlet.*; 6 | import javax.servlet.annotation.WebFilter; 7 | import javax.servlet.http.HttpServletRequest; 8 | import java.io.IOException; 9 | 10 | @WebFilter(urlPatterns = "/jsps/cart/*") 11 | public class LoginFilter implements Filter { 12 | public void destroy() { 13 | } 14 | 15 | public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 16 | HttpServletRequest httpServletRequest = (HttpServletRequest) req; 17 | User user = (User) httpServletRequest.getSession().getAttribute("session_user"); 18 | 19 | if(user != null) { 20 | chain.doFilter(req, resp); 21 | } else { 22 | httpServletRequest.setAttribute("msg","您还没有登录哟!!!"); 23 | req.getRequestDispatcher("/login.jsp").forward(req,resp); 24 | } 25 | 26 | } 27 | 28 | public void init(FilterConfig config) throws ServletException { 29 | 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/filter/Login2Filter.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.filter; 2 | 3 | import rj.bookstore.user.domain.User; 4 | 5 | import javax.servlet.*; 6 | import javax.servlet.annotation.WebFilter; 7 | import javax.servlet.http.HttpServletRequest; 8 | import java.io.IOException; 9 | 10 | @WebFilter(urlPatterns = "/OrderServlet") 11 | public class Login2Filter implements Filter { 12 | public void destroy() { 13 | } 14 | 15 | public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 16 | HttpServletRequest httpServletRequest = (HttpServletRequest) req; 17 | User user = (User) httpServletRequest.getSession().getAttribute("session_user"); 18 | 19 | if(user != null) { 20 | chain.doFilter(req, resp); 21 | } else { 22 | httpServletRequest.setAttribute("msg","您还没有登录哟!!!"); 23 | req.getRequestDispatcher("/login.jsp").forward(req,resp); 24 | } 25 | 26 | } 27 | 28 | public void init(FilterConfig config) throws ServletException { 29 | 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/filter/Login3Filter.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.filter; 2 | 3 | import rj.bookstore.user.domain.User; 4 | 5 | import javax.servlet.*; 6 | import javax.servlet.annotation.WebFilter; 7 | import javax.servlet.http.HttpServletRequest; 8 | import java.io.IOException; 9 | 10 | @WebFilter(urlPatterns = "/jsps/order/*") 11 | public class Login3Filter implements Filter { 12 | public void destroy() { 13 | } 14 | 15 | public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 16 | HttpServletRequest httpServletRequest = (HttpServletRequest) req; 17 | User user = (User) httpServletRequest.getSession().getAttribute("session_user"); 18 | 19 | if(user != null) { 20 | chain.doFilter(req, resp); 21 | } else { 22 | httpServletRequest.setAttribute("msg","您还没有登录哟!!!"); 23 | req.getRequestDispatcher("/login.jsp").forward(req,resp); 24 | } 25 | 26 | } 27 | 28 | public void init(FilterConfig config) throws ServletException { 29 | 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/category/del.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 删除分类 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 20 | 21 | 22 | 23 |

删除分类

24 |
25 | 26 | 分类名称: 27 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/login.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 管理员登录页面 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 |

管理员登录页面

22 |
23 |

${msg }

24 |
25 | 26 | 管理员账户:
27 | 密   码:
28 | 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/category/add.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 添加分类 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 20 | 21 | 22 | 23 |

添加分类

24 |

${msg }

25 |
26 | 27 | 分类名称: 28 | 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/user/service/UserService.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.user.service; 2 | 3 | import rj.bookstore.user.dao.UserDao; 4 | import rj.bookstore.user.domain.User; 5 | 6 | /** 7 | * 业务逻辑层 8 | * 9 | * 10 | * */ 11 | 12 | public class UserService { 13 | 14 | UserDao userDao = new UserDao(); 15 | 16 | /** 17 | * 注册功能 18 | * 19 | * 20 | * */ 21 | 22 | public void regist(User form) throws UserException { 23 | User user = userDao.findByUsername(form.getUsername()); 24 | if(user != null) throw new UserException("用户名已经被注册"); 25 | 26 | user = userDao.findByEmail(form.getEmail()); 27 | if(user != null) throw new UserException("Email 已经注册!"); 28 | 29 | userDao.add(form); 30 | } 31 | 32 | public User login(User form) throws UserException { 33 | 34 | User user = userDao.findByUsername(form.getUsername()); 35 | 36 | if(user == null) throw new UserException("用户名不存在"); 37 | 38 | if(!user.getPassword().equals(form.getPassword())) { 39 | throw new UserException("密码错误!"); 40 | } 41 | 42 | return user; 43 | 44 | 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/category/mod.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 修改分类 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 20 | 21 | 22 | 23 |

修改分类

24 |
25 | 26 | 27 | 分类名称: 28 | 29 |
30 | 31 | 32 | -------------------------------------------------------------------------------- /BookStore/web/jsps/user/login.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 登录 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 |

登录

25 |

${msg }

26 |
27 | 28 | 用户名:
29 | 密 码:
30 | 31 |
32 | 33 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/category/servlce/CategoryService.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.category.servlce; 2 | 3 | import java.util.*; 4 | 5 | import rj.bookstore.book.dao.BookDao; 6 | import rj.bookstore.book.domain.Book; 7 | import rj.bookstore.category.dao.CategoryDao; 8 | import rj.bookstore.category.domain.Category; 9 | import rj.bookstore.category.web.servlet.admin.CategoryException; 10 | 11 | public class CategoryService { 12 | 13 | private CategoryDao categoryDao = new CategoryDao(); 14 | private BookDao bookDao = new BookDao(); 15 | 16 | public List findAll() { 17 | return categoryDao.findAll(); 18 | } 19 | 20 | public void add(Category category) { 21 | categoryDao.add(category); 22 | } 23 | 24 | public void delete(String cid) throws CategoryException { 25 | int count = bookDao.getCountByCid(cid); 26 | if(count > 0) { 27 | throw new CategoryException("该分类下还有图书,不能删除!!!"); 28 | } else { 29 | categoryDao.delete(cid); 30 | } 31 | } 32 | 33 | public Category load(String cid) { 34 | return categoryDao.load(cid); 35 | } 36 | 37 | public void edit(Category category) { 38 | categoryDao.edit(category); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/cart/entity/Cart.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.cart.entity; 2 | 3 | import java.math.BigDecimal; 4 | import java.util.Collection; 5 | import java.util.Collections; 6 | import java.util.LinkedHashMap; 7 | import java.util.Map; 8 | 9 | public class Cart { 10 | 11 | private Map map = new LinkedHashMap(); 12 | 13 | 14 | public double getTotal() { 15 | BigDecimal total = new BigDecimal("0"); 16 | for(CartItem cartItem : map.values()) { 17 | BigDecimal d2 = new BigDecimal(""+cartItem.getSubtotal()); 18 | total = total.add(d2); 19 | } 20 | return total.doubleValue(); 21 | } 22 | 23 | public void add(CartItem cartItem){ 24 | if(map.containsKey(cartItem.getBook().getBid())) { 25 | CartItem _cartItem = map.get((cartItem.getBook().getBid())); 26 | _cartItem.setCount(_cartItem.getCount()+cartItem.getCount()); 27 | map.put(cartItem.getBook().getBid(),_cartItem); 28 | } else { 29 | map.put(cartItem.getBook().getBid(),cartItem); 30 | } 31 | } 32 | 33 | public void clear(){ 34 | map.clear(); 35 | } 36 | 37 | public void delete(String bid) { 38 | map.remove(bid); 39 | } 40 | 41 | public Collection getCartItems() { 42 | return map.values(); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /BookStore/web/jsps/left.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | left 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 33 | 34 | 35 | 36 | 37 |
38 | 全部分类 39 |
40 | 41 | 42 |
43 | ${category.cname } 44 |
45 |
46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/order/service/OrderService.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.order.service; 2 | 3 | import cn.itcast.jdbc.JdbcUtils; 4 | import rj.bookstore.order.dao.OrderDao; 5 | import rj.bookstore.order.entity.Order; 6 | 7 | import java.sql.SQLException; 8 | import java.util.List; 9 | 10 | public class OrderService { 11 | private OrderDao orderDao = new OrderDao(); 12 | 13 | public void add(Order order) { 14 | try{ 15 | JdbcUtils.beginTransaction(); 16 | orderDao.addOrder(order); 17 | orderDao.addOrderItem(order.getOrderItemList()); 18 | JdbcUtils.commitTransaction(); 19 | 20 | }catch (Exception e) { 21 | try { 22 | JdbcUtils.rollbackTransaction(); 23 | } catch (SQLException ex) { 24 | ex.printStackTrace(); 25 | } 26 | throw new RuntimeException(e); 27 | } 28 | } 29 | 30 | public List myOrders(String uid) { 31 | return orderDao.findById(uid); 32 | } 33 | 34 | public Order load(String oid) { 35 | return orderDao.load(oid); 36 | } 37 | 38 | public void confirm(String oid) throws OrderException { 39 | int state = orderDao.getState(oid); 40 | if(state != 3) { 41 | throw new OrderException("订单确认失败!"); 42 | } 43 | 44 | orderDao.updateState(oid,4); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/book/list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 图书分类 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 32 | 33 | 34 | 35 | 36 | 37 |
38 | 39 |
40 | ${book.bname} 41 |
42 |
43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/book/web/servlet/BookServlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.book.web.servlet; 2 | 3 | import cn.itcast.servlet.BaseServlet; 4 | import rj.bookstore.book.service.BookService; 5 | 6 | import javax.servlet.ServletException; 7 | import javax.servlet.annotation.WebServlet; 8 | import javax.servlet.http.HttpServlet; 9 | import javax.servlet.http.HttpServletRequest; 10 | import javax.servlet.http.HttpServletResponse; 11 | import java.io.IOException; 12 | 13 | @WebServlet( urlPatterns = "/BookServlet") 14 | public class BookServlet extends BaseServlet { 15 | 16 | private BookService bookService = new BookService(); 17 | 18 | 19 | public String load(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 20 | request.setAttribute("book",bookService.load(request.getParameter("bid"))); 21 | return "f:jsps/book/desc.jsp"; 22 | } 23 | 24 | public String findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 25 | 26 | request.setAttribute("bookList",bookService.findAll()); 27 | return "f:jsps/book/list.jsp"; 28 | } 29 | 30 | 31 | public String findByCategoryId(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 32 | 33 | request.setAttribute("bookList",bookService.findByCategoryId(request.getParameter("cid")));; 34 | return "f:/jsps/book/list.jsp"; 35 | } 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/order/entity/OrderItem.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.order.entity; 2 | 3 | import rj.bookstore.book.domain.Book; 4 | 5 | public class OrderItem { 6 | 7 | private String iid; 8 | private int count; 9 | private double subtotal; 10 | private Order order; // 所属订单 11 | private Book book; // 所要购买的书单 12 | 13 | public OrderItem(){} 14 | 15 | public OrderItem(String iid, int count, double subtotal, Order order, Book book) { 16 | this.iid = iid; 17 | this.count = count; 18 | this.subtotal = subtotal; 19 | this.order = order; 20 | this.book = book; 21 | } 22 | 23 | public String getIid() { 24 | return iid; 25 | } 26 | 27 | public void setIid(String iid) { 28 | this.iid = iid; 29 | } 30 | 31 | public int getCount() { 32 | return count; 33 | } 34 | 35 | public void setCount(int count) { 36 | this.count = count; 37 | } 38 | 39 | public double getSubtotal() { 40 | return subtotal; 41 | } 42 | 43 | public void setSubtotal(double subtotal) { 44 | this.subtotal = subtotal; 45 | } 46 | 47 | public Order getOrder() { 48 | return order; 49 | } 50 | 51 | public void setOrder(Order order) { 52 | this.order = order; 53 | } 54 | 55 | public Book getBook() { 56 | return book; 57 | } 58 | 59 | public void setBook(Book book) { 60 | this.book = book; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /BookStore/BookStore.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/category/list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 分类列表 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 22 | 23 | 24 | 25 |

分类列表

26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 38 | 39 | 40 | 41 | 42 |
分类名称操作
${c.cname} 35 | 修改 | 36 | 删除 37 |
43 | 44 | 45 | -------------------------------------------------------------------------------- /BookStore/web/menu/mymenu.css: -------------------------------------------------------------------------------- 1 | .menuBar { 2 | border:1px solid rgb(211,211,211); 3 | width:260px; 4 | color:#ffffff; 5 | font-family: "Verdana", "Arial", "Helvetica", "sans-serif"; 6 | } 7 | .barTitle { 8 | height:55px; 9 | background-color:rgb(25,119,176); 10 | font-weight:bold; 11 | } 12 | 13 | .barTitleText { 14 | float:left; 15 | width:100%; 16 | margin-top:20px; 17 | text-align:center; 18 | } 19 | 20 | .menuTitleText { 21 | margin-top:3px; 22 | margin-left:10px; 23 | float:left; 24 | } 25 | 26 | 27 | .menuTitle { 28 | background-color:rgb(25,119,176); 29 | width:260px; 30 | height:25px; 31 | margin-top:1px; 32 | border-right-color:rgb(211,211,211); 33 | border-bottom-color:rgb(211,211,211); 34 | border-right-width:1px; 35 | border-bottom-width:1px; 36 | border-right-style:solid; 37 | border-bottom-style:solid; 38 | cursor:pointer; 39 | } 40 | .menuTitleIcon { 41 | margin-top:3px; 42 | float:left; 43 | } 44 | 45 | .menuContent { 46 | /* height:150px;*/ 47 | color:#FFFFFF; 48 | display:none; 49 | overflow:auto; 50 | text-align:center; 51 | } 52 | .barBottom { 53 | background-color:rgb(25,119,176); 54 | width:260px; 55 | height:15px; 56 | } 57 | a { 58 | color:#000000; 59 | font-family: "Verdana", "Arial", "Helvetica", "sans-serif"; 60 | } 61 | a:link { 62 | TEXT-DECORATION: none 63 | } 64 | a:visited { 65 | TEXT-DECORATION: none 66 | } 67 | a:hover { 68 | TEXT-DECORATION: none; 69 | 70 | } 71 | a:active { 72 | TEXT-DECORATION: none;/*underline*/ 73 | } 74 | 75 | .menuItem { 76 | height:25px; 77 | margin-bottom:1px; 78 | border: 1px solid rgb(68,141,174); 79 | background-color: rgb(121,201,236); 80 | cursor:pointer; 81 | } -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/book/add.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 添加图书 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 20 | 21 | 22 | 23 |

添加图书

24 |

${msg }

25 |
26 | 图书名称:
27 | 图书图片:
28 | 图书单价:
29 | 图书作者:
30 | 图书分类: 36 |
37 | 38 |
39 | 40 | 41 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/admin/web/servlet/AdminServlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.admin.web.servlet; 2 | 3 | import cn.itcast.commons.CommonUtils; 4 | import cn.itcast.servlet.BaseServlet; 5 | import rj.bookstore.admin.entity.Admin; 6 | import rj.bookstore.admin.service.AdminService; 7 | import rj.bookstore.cart.entity.Cart; 8 | import rj.bookstore.user.domain.User; 9 | import rj.bookstore.user.service.UserException; 10 | 11 | import javax.servlet.ServletException; 12 | import javax.servlet.annotation.WebServlet; 13 | import javax.servlet.http.HttpServlet; 14 | import javax.servlet.http.HttpServletRequest; 15 | import javax.servlet.http.HttpServletResponse; 16 | import java.io.IOException; 17 | import java.io.UnsupportedEncodingException; 18 | 19 | @WebServlet(urlPatterns = "/AdminServlet") 20 | public class AdminServlet extends BaseServlet { 21 | 22 | private AdminService adminService = new AdminService(); 23 | 24 | 25 | public String login(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { 26 | 27 | request.setCharacterEncoding("utf-8"); 28 | System.out.println(request.getParameter("username") + "," + request.getParameter("password")); 29 | Admin form = CommonUtils.toBean(request.getParameterMap(),Admin.class); 30 | 31 | try { 32 | Admin admin = adminService.login(form); 33 | request.getSession().setAttribute("session_admin",admin); 34 | return "r:/adminjsps/admin/main.jsp"; 35 | } catch (UserException e) { 36 | request.setAttribute("msg",e.getMessage()); 37 | request.setAttribute("form",form); 38 | 39 | return "f:/adminjsps/login.jsp"; 40 | } 41 | 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /BookStore/web/login.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | login 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

Master Login Form

21 |
22 | 23 |
24 |
25 |

${msg }

26 |
27 | 28 | 29 | 30 | --> 31 |
32 |
33 |
34 |
35 | 36 |
37 | 38 | -------------------------------------------------------------------------------- /BookStore/web/jsps/top.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | top 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 31 | 32 | 33 | 34 |

DaulFrank BookStore

35 |
36 | 37 | 38 | 登录 |  39 | 注册 40 | 41 | 42 | 您好:${sessionScope.session_user.username}  |   43 | 我的购物车  |   44 | 我的订单  |   45 | 退出 46 |
47 |
48 | 49 |
50 | 51 | 52 |
53 | 54 | 55 | -------------------------------------------------------------------------------- /BookStore/.idea/libraries/activation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/main.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | My JSP 'main.jsp' starting page 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 42 | 43 | 44 | 45 | 46 | 47 | 50 | 51 | 52 | 55 | 58 | 59 |
48 | 49 |
53 | 54 | 56 | 57 |
60 | 61 | 62 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/book/domain/Book.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.book.domain; 2 | 3 | import rj.bookstore.category.domain.Category; 4 | 5 | public class Book { 6 | private String bid; 7 | private String bname; 8 | private double price; 9 | private String author; 10 | private String image; 11 | private Category category; 12 | private boolean del; 13 | 14 | public Book(){} 15 | 16 | public Book(String bid, String bname, double price, String author, String image, Category category) { 17 | this.bid = bid; 18 | this.bname = bname; 19 | this.price = price; 20 | this.author = author; 21 | this.image = image; 22 | this.category = category; 23 | } 24 | 25 | public String getBid() { 26 | return bid; 27 | } 28 | 29 | public void setBid(String bid) { 30 | this.bid = bid; 31 | } 32 | 33 | public String getBname() { 34 | return bname; 35 | } 36 | 37 | public void setBname(String bname) { 38 | this.bname = bname; 39 | } 40 | 41 | public double getPrice() { 42 | return price; 43 | } 44 | 45 | public void setPrice(double price) { 46 | this.price = price; 47 | } 48 | 49 | public String getAuthor() { 50 | return author; 51 | } 52 | 53 | public void setAuthor(String author) { 54 | this.author = author; 55 | } 56 | 57 | public String getImage() { 58 | return image; 59 | } 60 | 61 | public void setImage(String image) { 62 | this.image = image; 63 | } 64 | 65 | public Category getCategory() { 66 | return category; 67 | } 68 | 69 | public void setCategory(Category category) { 70 | this.category = category; 71 | } 72 | 73 | public boolean isDel() { 74 | return del; 75 | } 76 | 77 | public void setDel(boolean del) { 78 | this.del = del; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /BookStore/web/jsps/book/desc.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 图书详细 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 52 | 53 | 54 | 55 |
56 | 57 |
58 |
    59 |
  • 书名:${book.bname}
  • 60 |
  • 作者:${book.author}
  • 61 |
  • 单价:${book.price}
  • 62 |
63 |
64 | 65 | 66 | 67 |
68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/order/entity/Order.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.order.entity; 2 | 3 | import rj.bookstore.user.domain.User; 4 | 5 | import java.util.Date; 6 | import java.util.*; 7 | 8 | public class Order { 9 | 10 | private String oid; 11 | private Date ordertime; 12 | private double total; 13 | private int state; // 4 种状态 14 | private User owner; 15 | private String address; 16 | 17 | private List orderItemList; // 当前订单下所有条目 18 | 19 | public Order(){} 20 | 21 | public Order(String oid, Date ordertime, double total, int state, User owner, String address) { 22 | this.oid = oid; 23 | this.ordertime = ordertime; 24 | this.total = total; 25 | this.state = state; 26 | this.owner = owner; 27 | this.address = address; 28 | } 29 | 30 | public String getOid() { 31 | return oid; 32 | } 33 | 34 | public void setOid(String oid) { 35 | this.oid = oid; 36 | } 37 | 38 | public Date getOrdertime() { 39 | return ordertime; 40 | } 41 | 42 | public void setOrdertime(Date ordertime) { 43 | this.ordertime = ordertime; 44 | } 45 | 46 | public double getTotal() { 47 | return total; 48 | } 49 | 50 | public void setTotal(double total) { 51 | this.total = total; 52 | } 53 | 54 | public int getState() { 55 | return state; 56 | } 57 | 58 | public void setState(int state) { 59 | this.state = state; 60 | } 61 | 62 | public User getOwner() { 63 | return owner; 64 | } 65 | 66 | public void setOwner(User owner) { 67 | this.owner = owner; 68 | } 69 | 70 | public String getAddress() { 71 | return address; 72 | } 73 | 74 | public void setAddress(String address) { 75 | this.address = address; 76 | } 77 | 78 | public List getOrderItemList() { 79 | return orderItemList; 80 | } 81 | 82 | public void setOrderItemList(List orderItemList) { 83 | this.orderItemList = orderItemList; 84 | } 85 | } 86 | 87 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/category/dao/CategoryDao.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.category.dao; 2 | 3 | import cn.itcast.jdbc.TxQueryRunner; 4 | import com.mchange.v2.c3p0.ComboPooledDataSource; 5 | import org.apache.commons.dbutils.QueryRunner; 6 | import org.apache.commons.dbutils.handlers.BeanHandler; 7 | import org.apache.commons.dbutils.handlers.BeanListHandler; 8 | import rj.bookstore.category.domain.Category; 9 | 10 | import java.sql.SQLException; 11 | import java.util.List; 12 | 13 | public class CategoryDao { 14 | 15 | QueryRunner qr = new TxQueryRunner(); 16 | 17 | 18 | public List findAll() { 19 | String sql = "select * from category"; 20 | 21 | try { 22 | return qr.query(sql,new BeanListHandler(Category.class)); 23 | } catch (SQLException e) { 24 | throw new RuntimeException(e); 25 | } 26 | } 27 | 28 | public void add(Category category) { 29 | String sql = "insert into category values(?,?)"; 30 | 31 | try { 32 | qr.update(sql,category.getCid(),category.getCname()); 33 | } catch (SQLException e) { 34 | throw new RuntimeException(e); 35 | } 36 | } 37 | 38 | public void delete(String cid) { 39 | String sql = "delete from category where cid = ?"; 40 | 41 | try { 42 | qr.update(sql,cid); 43 | } catch (SQLException e) { 44 | throw new RuntimeException(e); 45 | } 46 | } 47 | 48 | // 加载分类 49 | public Category load(String cid) { 50 | String sql = "select * from category where cid = ?"; 51 | try { 52 | return qr.query(sql,new BeanHandler<>(Category.class),cid); 53 | } catch (SQLException e) { 54 | throw new RuntimeException(e); 55 | } 56 | } 57 | 58 | public void edit(Category category) { 59 | String sql = "update category set cname= ? where cid = ?"; 60 | try { 61 | qr.update(sql,category.getCname(),category.getCid()); 62 | }catch (SQLException e) { 63 | throw new RuntimeException(e); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/user/domain/User.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.user.domain; 2 | 3 | public class User { 4 | private String uid; 5 | private String username; 6 | private String password; 7 | private String email; 8 | private String code; 9 | private boolean state; 10 | 11 | // 无参构造 12 | public User() { 13 | 14 | } 15 | 16 | // 有参构造 17 | public User(String uid, String username, String password, String email, String code, boolean state) { 18 | this.uid = uid; 19 | this.username = username; 20 | this.password = password; 21 | this.email = email; 22 | this.code = code; 23 | this.state = state; 24 | } 25 | 26 | public String getUid() { 27 | return uid; 28 | } 29 | 30 | public void setUid(String uid) { 31 | this.uid = uid; 32 | } 33 | 34 | public String getUsername() { 35 | return username; 36 | } 37 | 38 | public void setUsername(String username) { 39 | this.username = username; 40 | } 41 | 42 | public String getPassword() { 43 | return password; 44 | } 45 | 46 | public void setPassword(String password) { 47 | this.password = password; 48 | } 49 | 50 | public String getEmail() { 51 | return email; 52 | } 53 | 54 | public void setEmail(String email) { 55 | this.email = email; 56 | } 57 | 58 | public String getCode() { 59 | return code; 60 | } 61 | 62 | public void setCode(String code) { 63 | this.code = code; 64 | } 65 | 66 | public boolean isState() { 67 | return state; 68 | } 69 | 70 | public void setState(boolean state) { 71 | this.state = state; 72 | } 73 | 74 | @Override 75 | public String toString() { 76 | return "User{" + 77 | "uid='" + uid + '\'' + 78 | ", username='" + username + '\'' + 79 | ", password='" + password + '\'' + 80 | ", email='" + email + '\'' + 81 | ", code='" + code + '\'' + 82 | ", state=" + state + 83 | '}'; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/left.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 菜单 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/cart/web/servlet/CartServlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.cart.web.servlet; 2 | 3 | import cn.itcast.servlet.BaseServlet; 4 | import rj.bookstore.book.domain.Book; 5 | import rj.bookstore.book.service.BookService; 6 | import rj.bookstore.cart.entity.Cart; 7 | import rj.bookstore.cart.entity.CartItem; 8 | 9 | import javax.servlet.ServletException; 10 | import javax.servlet.annotation.WebServlet; 11 | import javax.servlet.http.HttpServlet; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.io.IOException; 15 | import java.util.Base64; 16 | 17 | @WebServlet(urlPatterns = "/CartServlet") 18 | public class CartServlet extends BaseServlet { 19 | 20 | 21 | public String add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 22 | 23 | Cart cart = (Cart) request.getSession().getAttribute("cart"); 24 | 25 | String bid = request.getParameter("bid"); 26 | 27 | Book book = new BookService().load(bid); 28 | 29 | int count = Integer.parseInt(request.getParameter("count")); 30 | 31 | CartItem cartItem = new CartItem(); 32 | 33 | System.out.println(book.getBid()+","+book.getBname()); 34 | System.out.println(count); 35 | System.out.println(".................................................................................."); 36 | 37 | cartItem.setBook(book); 38 | cartItem.setCount(count); 39 | 40 | cart.add(cartItem); 41 | 42 | return "f:jsps/cart/list.jsp"; 43 | } 44 | 45 | public String delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 46 | Cart cart = (Cart) request.getSession().getAttribute("cart"); 47 | cart.delete(request.getParameter("bid")); 48 | return "f:jsps/cart/list.jsp"; 49 | } 50 | 51 | public String clear(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 52 | Cart cart = (Cart) request.getSession().getAttribute("cart"); 53 | cart.clear(); 54 | return "f:jsps/cart/list.jsp"; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /BookStore/web/jsps/main.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | index 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 47 | 48 | 49 | 50 | 51 | 52 | 55 | 56 | 57 | 60 | 63 | 64 |
53 | 54 |
58 | 59 | 61 | 62 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /BookStore/web/jsps/user/regist.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | login 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

Master Login Form

21 |
22 | 23 |
24 |
25 |
26 | 27 |    ${errors.username }
28 | 29 |    ${errors.password }
30 | 31 |    ${errors.email }
32 | 33 | 34 |
35 |
36 |
37 |
38 | 39 |
40 | 41 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/user/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.user.dao; 2 | 3 | import java.sql.SQLException; 4 | 5 | import org.apache.commons.dbutils.QueryRunner; 6 | import org.apache.commons.dbutils.handlers.BeanHandler; 7 | 8 | import cn.itcast.jdbc.TxQueryRunner; 9 | import rj.bookstore.user.domain.User; 10 | 11 | /** 12 | * User 持久层 13 | * 14 | * 15 | * */ 16 | 17 | public class UserDao { 18 | 19 | private QueryRunner qr = new TxQueryRunner(); 20 | 21 | /** 22 | * 通过姓名查找用户 23 | * 24 | * */ 25 | 26 | public User findByUsername(String username) { 27 | try{ 28 | String sql = "select * from tb_user where username = ?"; 29 | return qr.query(sql,new BeanHandler(User.class),username); 30 | }catch (SQLException e) { 31 | throw new RuntimeException(e); 32 | } 33 | } 34 | 35 | 36 | /** 37 | * 通过 Email 查找 38 | * */ 39 | public User findByEmail(String email) { 40 | try{ 41 | String sql = "select * from tb_user where email = ?"; 42 | return qr.query(sql,new BeanHandler(User.class),email); 43 | }catch (SQLException e) { 44 | throw new RuntimeException(e); 45 | } 46 | } 47 | 48 | /** 49 | * 添加用户 50 | * */ 51 | public void add1(User user) { 52 | try { 53 | String sql = "insert into tb_user values(?,?,?,?,?)"; 54 | 55 | Object[] params = {user.getUid(), user.getUsername(), user.getPassword(), user.getEmail(), user.isState()}; 56 | 57 | qr.update(sql, params); 58 | 59 | } catch (SQLException e) { 60 | throw new RuntimeException(e); 61 | } 62 | } 63 | 64 | public void add(User user) { 65 | try { 66 | String sql = "insert into tb_user values(?,?,?,?,?,?)"; 67 | Object[] params = {user.getUid(), user.getUsername(), 68 | user.getPassword(), user.getEmail(), user.getCode(), 69 | user.isState()}; 70 | qr.update(sql, params); 71 | } catch(SQLException e) { 72 | throw new RuntimeException(e); 73 | } 74 | } 75 | 76 | 77 | 78 | } 79 | -------------------------------------------------------------------------------- /BookStore/web/regist.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 3 | 4 | 5 | 6 | 7 | login 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

Master Login Form

21 |
22 | 23 |
24 |
25 |

${msg }

26 |
27 | 28 |    ${errors.username }
29 | 30 |    ${errors.password }
31 | 32 |    ${errors.email }
33 | 34 | 35 |
36 |
37 |
38 |
39 | 40 |
41 | 42 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/book/desc.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | My JSP 'bookdesc.jsp' starting page 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 35 | 36 | 42 | 43 | 44 | 45 | 46 |
47 | 48 |
49 |
50 | 51 | 52 | 53 | 图书名称:
54 | 图书单价:
55 | 图书作者:
56 | 图书分类:
65 | 66 | 67 |
68 | 69 | 70 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/book/web/servlet/admin/AdminBookServlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.book.web.servlet.admin; 2 | 3 | import cn.itcast.commons.CommonUtils; 4 | import cn.itcast.servlet.BaseServlet; 5 | import rj.bookstore.book.domain.Book; 6 | import rj.bookstore.book.service.BookService; 7 | import rj.bookstore.category.domain.Category; 8 | import rj.bookstore.category.servlce.CategoryService; 9 | 10 | import javax.servlet.ServletException; 11 | import javax.servlet.annotation.WebServlet; 12 | import javax.servlet.http.HttpServlet; 13 | import javax.servlet.http.HttpServletRequest; 14 | import javax.servlet.http.HttpServletResponse; 15 | import java.io.IOException; 16 | 17 | @WebServlet(urlPatterns = "/AdminBookServlet") 18 | public class AdminBookServlet extends BaseServlet { 19 | 20 | private BookService bookService = new BookService(); 21 | private CategoryService categoryService = new CategoryService(); 22 | 23 | public String edit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 24 | Book book = CommonUtils.toBean(request.getParameterMap(),Book.class); 25 | Category category = CommonUtils.toBean(request.getParameterMap(),Category.class); 26 | book.setCategory(category); 27 | bookService.edit(book); 28 | return findAll(request,response); 29 | } 30 | 31 | public String delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 32 | bookService.delete(request.getParameter("bid")); 33 | return findAll(request,response); 34 | } 35 | 36 | public String addPre(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 37 | 38 | request.setAttribute("categoryList",categoryService.findAll()); 39 | return "f:adminjsps/admin/book/add.jsp"; 40 | 41 | 42 | } 43 | 44 | public String load(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 45 | 46 | request.setAttribute("book",bookService.load(request.getParameter("bid"))); 47 | request.setAttribute("category",categoryService.findAll()); 48 | return "f:adminjsps/admin/book/desc.jsp"; 49 | 50 | } 51 | 52 | public String findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 53 | 54 | request.setAttribute("bookList",bookService.findAll()); 55 | return "f:/adminjsps/admin/book/list.jsp"; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/category/web/servlet/admin/AdminCategoryServlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.category.web.servlet.admin; 2 | 3 | import cn.itcast.commons.CommonUtils; 4 | import cn.itcast.servlet.BaseServlet; 5 | import rj.bookstore.category.domain.Category; 6 | import rj.bookstore.category.servlce.CategoryService; 7 | 8 | import javax.servlet.ServletException; 9 | import javax.servlet.annotation.WebServlet; 10 | import javax.servlet.http.HttpServlet; 11 | import javax.servlet.http.HttpServletRequest; 12 | import javax.servlet.http.HttpServletResponse; 13 | import java.io.IOException; 14 | import java.sql.SQLException; 15 | 16 | @WebServlet(urlPatterns = "/AdminCategoryServlet") 17 | public class AdminCategoryServlet extends BaseServlet { 18 | 19 | private CategoryService categoryService= new CategoryService(); 20 | 21 | 22 | public String edit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 23 | Category category = CommonUtils.toBean(request.getParameterMap(),Category.class); 24 | categoryService.edit(category); 25 | return findAll(request,response); 26 | } 27 | 28 | public String editPre(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 29 | String cid = request.getParameter("cid"); 30 | 31 | request.setAttribute("category", categoryService.load(cid)); 32 | return "f:/adminjsps/admin/category/mod.jsp"; 33 | } 34 | 35 | public String delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 36 | try { 37 | categoryService.delete(request.getParameter("cid")); 38 | return findAll(request,response); 39 | } catch (CategoryException e) { 40 | request.setAttribute("msg",e.getMessage()); 41 | return "f:adminjsps/msg.jsp"; 42 | } 43 | 44 | } 45 | 46 | public String add(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{ 47 | Category category = CommonUtils.toBean(request.getParameterMap(),Category.class); 48 | category.setCid(CommonUtils.uuid()); 49 | 50 | categoryService.add(category); 51 | return findAll(request,response); 52 | } 53 | 54 | public String findAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 55 | 56 | 57 | request.setAttribute("categoryList",categoryService.findAll()); 58 | 59 | return "f:adminjsps/admin/category/list.jsp"; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /BookStore/web/jsps/order/list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 4 | 5 | 6 | 7 | 8 | 订单列表 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 52 | 53 | 54 | 55 |

我的订单

56 | 57 | 58 | 59 | 60 | 76 | 77 | 78 | 79 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |
61 | 订单编号:${order.oid} 成交时间:${order.ordertime} 金额:${order.total}  62 | 63 | 64 | 65 | 66 | 付款 67 | 68 | 等待发货 69 | 70 | 确认收货 71 | 72 | 交易成功 73 | 74 | 75 |
80 |
81 |
书名:${orderItem.book.bname}单价:${orderItem.book.price}元作者:${orderItem.book.author}数量:${orderItem.count}小计:${orderItem.subtotal}元
91 | 92 | 93 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/order/web/servlet/OrderServlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.order.web.servlet; 2 | 3 | import cn.itcast.commons.CommonUtils; 4 | import cn.itcast.servlet.BaseServlet; 5 | import rj.bookstore.cart.entity.Cart; 6 | import rj.bookstore.cart.entity.CartItem; 7 | import rj.bookstore.order.entity.Order; 8 | import rj.bookstore.order.entity.OrderItem; 9 | import rj.bookstore.order.service.OrderException; 10 | import rj.bookstore.order.service.OrderService; 11 | import rj.bookstore.user.domain.User; 12 | 13 | import javax.servlet.ServletException; 14 | import javax.servlet.annotation.WebServlet; 15 | import javax.servlet.http.HttpServlet; 16 | import javax.servlet.http.HttpServletRequest; 17 | import javax.servlet.http.HttpServletResponse; 18 | import java.io.IOException; 19 | import java.util.ArrayList; 20 | import java.util.*; 21 | 22 | @WebServlet(urlPatterns = "/OrderServlet") 23 | public class OrderServlet extends BaseServlet { 24 | private OrderService orderService = new OrderService(); 25 | 26 | 27 | public String confirm(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 28 | 29 | try { 30 | orderService.confirm(request.getParameter("oid")); 31 | request.setAttribute("msg","成功了"); 32 | } catch (OrderException e) { 33 | // e.printStackTrace(); 34 | request.setAttribute("msg",e.getMessage()); 35 | } 36 | return "f:/jsps/msg.jsp"; 37 | } 38 | 39 | public String load(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 40 | 41 | request.setAttribute("order",orderService.load(request.getParameter("oid"))); 42 | return "f:jsps/order/desc.jsp"; 43 | } 44 | 45 | // 我的订单 46 | public String myOrders(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 47 | User user = (User) request.getSession().getAttribute("session_user"); 48 | List orderList = orderService.myOrders(user.getUid()); 49 | request.setAttribute("orderList",orderList); 50 | return "f:jsps/order/list.jsp"; 51 | } 52 | 53 | public String add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 54 | 55 | Cart cart = (Cart) request.getSession().getAttribute("cart"); 56 | 57 | Order order = new Order(); 58 | order.setOid(CommonUtils.uuid()); 59 | order.setOrdertime(new Date()); 60 | order.setState(1); 61 | User user = (User) request.getSession().getAttribute("session_user"); 62 | 63 | order.setOwner(user); 64 | order.setTotal(cart.getTotal()); 65 | 66 | 67 | List orderItemList = new ArrayList(); 68 | 69 | for(CartItem cartItem:cart.getCartItems()){ 70 | OrderItem orderItem = new OrderItem(); 71 | orderItem.setIid(CommonUtils.uuid()); 72 | orderItem.setCount(cartItem.getCount()); 73 | orderItem.setBook(cartItem.getBook()); 74 | orderItem.setSubtotal(cartItem.getSubtotal()); 75 | orderItem.setOrder(order); 76 | orderItemList.add(orderItem); 77 | } 78 | order.setOrderItemList(orderItemList); 79 | 80 | 81 | cart.clear(); 82 | 83 | orderService.add(order); 84 | 85 | request.setAttribute("order",order); 86 | return "f:jsps/order/desc.jsp"; 87 | 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/book/dao/BookDao.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.book.dao; 2 | 3 | import cn.itcast.commons.CommonUtils; 4 | import cn.itcast.jdbc.TxQueryRunner; 5 | 6 | import java.sql.SQLException; 7 | import java.util.*; 8 | 9 | import com.sun.org.apache.bcel.internal.generic.ATHROW; 10 | import org.apache.commons.dbutils.QueryRunner; 11 | import org.apache.commons.dbutils.handlers.BeanHandler; 12 | import org.apache.commons.dbutils.handlers.BeanListHandler; 13 | import org.apache.commons.dbutils.handlers.MapHandler; 14 | import org.apache.commons.dbutils.handlers.ScalarHandler; 15 | import rj.bookstore.book.domain.Book; 16 | import rj.bookstore.category.domain.Category; 17 | 18 | public class BookDao { 19 | 20 | private QueryRunner qr = new TxQueryRunner(); 21 | 22 | public List findAll() { 23 | 24 | String sql = "select * from book where del = false"; 25 | 26 | try { 27 | 28 | return qr.query(sql,new BeanListHandler(Book.class)); 29 | } catch (SQLException e) { 30 | throw new RuntimeException(e); 31 | } 32 | } 33 | 34 | public List findByCategoryId(String id) { 35 | 36 | String sql = "select * from book where cid = ? and del = false"; 37 | 38 | try { 39 | return qr.query(sql,new BeanListHandler<>(Book.class),id); 40 | } catch (SQLException e) { 41 | throw new RuntimeException(e); 42 | } 43 | } 44 | 45 | public Book findByBid(String bid) { 46 | try { 47 | String sql = "select * from book where bid = ?"; 48 | Map map = qr.query(sql,new MapHandler(),bid); 49 | Category category = CommonUtils.toBean(map,Category.class); 50 | Book book = CommonUtils.toBean(map,Book.class); 51 | 52 | book.setCategory(category); 53 | return book; 54 | }catch (SQLException e) { 55 | throw new RuntimeException(e); 56 | } 57 | } 58 | 59 | public int getCountByCid(String cid) { 60 | String sql = "select count(*) from book where cid = ?"; 61 | try { 62 | 63 | Number cnt = (Number) qr.query(sql,new ScalarHandler(),cid); 64 | return cnt.intValue(); 65 | 66 | }catch (SQLException e) { 67 | throw new RuntimeException(e); 68 | } 69 | } 70 | 71 | public void add(Book book) { 72 | 73 | try{ 74 | String sql = "insert into book values(?,?,?,?,?,?)"; 75 | Object[] params = {book.getBid(),book.getBname(),book.getPrice(),book.getAuthor(),book.getImage(),book.getCategory().getCid()}; 76 | qr.update(sql,params); 77 | 78 | }catch (SQLException e) { 79 | throw new RuntimeException(e); 80 | } 81 | 82 | } 83 | 84 | public void delete(String bid) { 85 | try{ 86 | String sql = "update book set del=true where bid = ?"; 87 | 88 | qr.update(sql,bid); 89 | 90 | }catch (SQLException e) { 91 | throw new RuntimeException(e); 92 | } 93 | } 94 | 95 | public void edit(Book book) { 96 | try{ 97 | String sql = "update book set bname=?,price=?,author=?,image=?,cid=? where bid = ?"; 98 | Object[] params = {book.getBname(),book.getPrice(),book.getAuthor(),book.getImage(),book.getCategory().getCid(),book.getBid()}; 99 | qr.update(sql,params); 100 | 101 | }catch (SQLException e) { 102 | throw new RuntimeException(e); 103 | } 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /BookStore/web/jsps/order/desc.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 4 | 5 | 6 | 7 | 8 | 订单详细 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 55 | 56 | 57 | 58 |

当前订单

59 | 60 | 61 | 62 | 66 | 67 | 68 | 69 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |
63 | 订单编号:${order.oid} 成交时间: 64 | 金额:${order.total}元 65 |
70 |
71 |
书名:${orderItem.book.bname}单价:${orderItem.book.price}作者:${orderItem.book.author}数量:${orderItem.count}小计:${orderItem.subtotal}元
82 |
83 |
84 | 收货地址:
85 | 86 | 选择银行:
87 | 工商银行 88 | 89 | 中国银行 90 |

91 | 农业银行 92 | 93 | 建设银行 94 |

95 | 交通银行 96 |
97 |
98 | 99 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /BookStore/web/adminjsps/admin/order/list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 4 | 5 | 6 | 7 | 8 | 订单列表 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 33 | 34 | 35 | 36 |

我的订单

37 | 38 | 39 | 40 | 43 | 44 | 45 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 63 | 64 | 65 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 82 | 83 | 84 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 100 | 101 | 102 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 115 | 116 | 117 | 118 | 119 | 120 | 121 |
41 | 订单:8691b4150a0641e7a8729fd5e668820c 成交时间:2013-06-04 15:56:53 金额:126.4 已收货(完成) 42 |
46 |
47 |
书名:Struts2深入详解单价:63.2元作者:孙鑫数量:2小计:126.4元
60 | 订单:153839427aa94f359fe51932d9f9e383 成交时间:2013-06-04 15:02:31 金额:63.2  61 | 发货 62 |
66 |
67 |
书名:精通Spring2.x单价:63.2元作者:陈华雄数量:1小计:63.2元
80 | 订单:d1b85bfc71564b18bf7802582a9fd934 成交时间:2013-06-04 15:01:01 金额:137.0 已收货(完成) 81 |
85 |
86 |
书名:Java核心技术卷1单价:68.5元作者:qdmmy6数量:2小计:137.0元
98 | 订单:o1 成交时间:2013-06-04 12:47:41 金额:100.0 未付款 99 |
103 |
104 |
书名:Java编程思想(第4版)单价:75.6元作者:qdmmy6数量:2小计:300.0元
113 |
114 |
书名:Java核心技术卷1单价:68.5元作者:qdmmy6数量:3小计:500.0元
122 | 123 | 124 | -------------------------------------------------------------------------------- /BookStore/web/jsps/book/list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 图书列表 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 31 | 32 | 33 | 34 | 35 | 36 | <%-- var 相当于我们经常用到的 i 变量,这里是循环迭代--%> 37 | 38 |
39 | 40 |
41 | ${book.bname} 42 |
43 |
44 | 45 | <%--
--%> 46 | <%-- --%> 47 | <%--
--%> 48 | <%-- Java开发详解--%> 49 | <%--
--%> 50 | <%--
--%> 51 | <%-- --%> 52 | <%--
--%> 53 | <%-- Java开发详解--%> 54 | <%--
--%> 55 | <%--
--%> 56 | <%-- --%> 57 | <%--
--%> 58 | <%-- Java开发详解--%> 59 | <%--
--%> 60 | <%--
--%> 61 | <%-- --%> 62 | <%--
--%> 63 | <%-- Java开发详解--%> 64 | <%--
--%> 65 | <%--
--%> 66 | <%-- --%> 67 | <%--
--%> 68 | <%-- Java开发详解--%> 69 | <%--
--%> 70 | <%--
--%> 71 | <%-- --%> 72 | <%--
--%> 73 | <%-- Java开发详解--%> 74 | <%--
--%> 75 | <%--
--%> 76 | <%-- --%> 77 | <%--
--%> 78 | <%-- Java开发详解--%> 79 | <%--
--%> 80 | <%--
--%> 81 | <%-- --%> 82 | <%--
--%> 83 | <%-- Java开发详解--%> 84 | <%--
--%> 85 | <%--
--%> 86 | <%-- --%> 87 | <%--
--%> 88 | <%-- Java开发详解--%> 89 | <%--
--%> 90 | 91 | 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /BookStore/web/jsps/cart/list.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 4 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 5 | 6 | 7 | 8 | 9 | 10 | 购物车列表 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 58 | 59 | 60 | 61 |

购物车

62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 107 | 108 | 109 | 112 | 113 |
73 | 清空购物车 74 | 75 |
图片书名作者单价数量小计操作
91 |
92 |
${cartItems.book.bname}${cartItems.book.author}${cartItems.book.price}元${cartItems.count}${cartItems.subtotal}元删除
105 | 合计:${sessionScope.cart.total}元 106 |
110 | 111 |
114 |
115 |
116 | 117 | 118 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/book/web/servlet/admin/AdminAddBookServlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.book.web.servlet.admin; 2 | 3 | import cn.itcast.commons.CommonUtils; 4 | import org.apache.commons.fileupload.FileItem; 5 | import org.apache.commons.fileupload.FileUploadBase; 6 | import org.apache.commons.fileupload.FileUploadException; 7 | import org.apache.commons.fileupload.disk.DiskFileItemFactory; 8 | import org.apache.commons.fileupload.servlet.ServletFileUpload; 9 | import rj.bookstore.book.domain.Book; 10 | import rj.bookstore.book.service.BookService; 11 | import rj.bookstore.category.domain.Category; 12 | import rj.bookstore.category.servlce.CategoryService; 13 | 14 | import javax.servlet.ServletException; 15 | import javax.servlet.annotation.WebServlet; 16 | import javax.servlet.http.HttpServlet; 17 | import javax.servlet.http.HttpServletRequest; 18 | import javax.servlet.http.HttpServletResponse; 19 | import javax.swing.*; 20 | import java.awt.*; 21 | import java.io.File; 22 | import java.io.IOException; 23 | 24 | import java.util.*; 25 | import java.util.List; 26 | 27 | @WebServlet(urlPatterns = "/AdminAddBookServlet") 28 | public class AdminAddBookServlet extends HttpServlet { 29 | 30 | private BookService bookService = new BookService(); 31 | private CategoryService categoryService = new CategoryService(); 32 | 33 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 34 | 35 | // 上传三步 36 | 37 | DiskFileItemFactory factory = new DiskFileItemFactory(15*1024,new File("F:/f/temp")); 38 | ServletFileUpload sfu = new ServletFileUpload(factory); 39 | 40 | sfu.setFileSizeMax(15*1024); 41 | 42 | try { 43 | List fileItemList = sfu.parseRequest(request); 44 | 45 | Map map = new HashMap<>(); 46 | 47 | for(FileItem fileItem : fileItemList) { 48 | if(fileItem.isFormField()) { 49 | map.put(fileItem.getFieldName(),fileItem.getString("utf-8")); 50 | } 51 | } 52 | 53 | Book book = CommonUtils.toBean(map,Book.class); 54 | book.setBid(CommonUtils.uuid()); 55 | 56 | Category category = CommonUtils.toBean(map,Category.class); 57 | book.setCategory(category); 58 | 59 | 60 | // 保存上传的文件 61 | 62 | 63 | String savePath = this.getServletContext().getRealPath("/book_img"); 64 | 65 | String filename = CommonUtils.uuid() + "_" + fileItemList.get(1).getName(); 66 | 67 | if(!filename.toLowerCase().endsWith("jpg")) { 68 | request.setAttribute("msg","您上传的文件不是 jpg 格式的文件!!!"); 69 | request.setAttribute("categoryList",categoryService.findAll()); 70 | request.getRequestDispatcher("/adminjsps/admin/book/add.jsp").forward(request,response); 71 | 72 | return; 73 | } 74 | 75 | File destFile = new File(savePath,filename); 76 | // 保存文件到指定目录 77 | fileItemList.get(1).write(destFile); 78 | 79 | book.setImage("book_img/" + filename); 80 | 81 | 82 | 83 | bookService.add(book); 84 | 85 | Image image = new ImageIcon(destFile.getAbsolutePath()).getImage(); 86 | 87 | if(image.getWidth(null) > 200 || image.getWidth(null) > 200) { 88 | destFile.delete(); 89 | request.setAttribute("msg","您上传的图片超过了 200 * 200 的尺寸!!!"); 90 | request.setAttribute("categoryList",categoryService.findAll()); 91 | request.getRequestDispatcher("/adminjsps/admin/book/add.jsp").forward(request,response); 92 | return; 93 | } 94 | 95 | 96 | System.out.println(".................................................................."); 97 | 98 | request.getRequestDispatcher("/AdminBookServlet?method=findAll").forward(request,response); 99 | 100 | } catch (Exception e) { 101 | if(e instanceof FileUploadBase.FileSizeLimitExceededException) { 102 | request.setAttribute("msg","您上传的文件超过了 15 KB!"); 103 | request.setAttribute("categoryList",categoryService.findAll()); 104 | request.getRequestDispatcher("/adminjsps/admin/book/add.jsp").forward(request,response); 105 | } 106 | } 107 | } 108 | 109 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 110 | doPost(request,response); 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/user/web/servlet/UserServlet.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.user.web.servlet; 2 | 3 | import cn.itcast.commons.CommonUtils; 4 | import cn.itcast.mail.Mail; 5 | import cn.itcast.mail.MailUtils; 6 | import cn.itcast.servlet.BaseServlet; 7 | import rj.bookstore.cart.entity.Cart; 8 | import rj.bookstore.user.domain.User; 9 | import rj.bookstore.user.service.UserException; 10 | import rj.bookstore.user.service.UserService; 11 | 12 | import javax.mail.MessagingException; 13 | import javax.mail.Session; 14 | import javax.servlet.ServletException; 15 | import javax.servlet.ServletRequest; 16 | import javax.servlet.ServletResponse; 17 | import javax.servlet.annotation.WebServlet; 18 | import javax.servlet.http.HttpServletRequest; 19 | import javax.servlet.http.HttpServletResponse; 20 | import java.io.IOException; 21 | import java.io.UnsupportedEncodingException; 22 | import java.text.MessageFormat; 23 | import java.util.HashMap; 24 | import java.util.Map; 25 | import java.util.Properties; 26 | 27 | @WebServlet(urlPatterns = "/UserServlet") 28 | public class UserServlet extends BaseServlet { 29 | 30 | private UserService userService = new UserService(); 31 | 32 | public String quit(HttpServletRequest request, HttpServletResponse response) { 33 | 34 | System.out.println("啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊"); 35 | request.getSession().invalidate(); 36 | 37 | return "r:/jsps/main.jsp"; 38 | 39 | } 40 | 41 | public String login(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { 42 | 43 | request.setCharacterEncoding("utf-8"); 44 | System.out.println(request.getParameter("username") + "," + request.getParameter("password")); 45 | User form = CommonUtils.toBean(request.getParameterMap(),User.class); 46 | 47 | try { 48 | User user = userService.login(form); 49 | request.getSession().setAttribute("session_user",user); 50 | // 登录成功就发车 51 | request.getSession().setAttribute("cart",new Cart()); 52 | return "r:/jsps/main.jsp"; 53 | } catch (UserException e) { 54 | request.setAttribute("msg",e.getMessage()); 55 | request.setAttribute("form",form); 56 | 57 | return "f:/login.jsp"; 58 | } 59 | 60 | } 61 | 62 | 63 | 64 | public String active(ServletRequest req, ServletResponse res) throws ServletException, IOException { 65 | System.out.println("您激活了!"); 66 | return null; 67 | } 68 | 69 | public String regist(HttpServletRequest request, HttpServletResponse response) 70 | throws ServletException, IOException,UserException { 71 | request.setCharacterEncoding("utf-8"); 72 | User form = CommonUtils.toBean(request.getParameterMap(), User.class); 73 | 74 | System.out.println(request.getParameter("username")); 75 | 76 | form.setUid(CommonUtils.uuid()); 77 | form.setCode(CommonUtils.uuid() + CommonUtils.uuid()); 78 | 79 | Map errors = new HashMap(); 80 | 81 | String username = form.getUsername(); 82 | if (username == null || username.trim().isEmpty()) { 83 | errors.put("username", "用户名不能为空!"); 84 | } else if (username.length() < 3 || username.length() > 10) { 85 | errors.put("username", "用户名长度必须在3~10之间!"); 86 | } 87 | 88 | String password = form.getPassword(); 89 | if (password == null || password.trim().isEmpty()) { 90 | errors.put("password", "密码不能为空!"); 91 | } else if (password.length() < 3 || password.length() > 10) { 92 | errors.put("password", "密码长度必须在3~10之间!"); 93 | } 94 | 95 | String email = form.getEmail(); 96 | if (email == null || email.trim().isEmpty()) { 97 | errors.put("email", "Email不能为空!"); 98 | } else if (!email.matches("\\w+@\\w+\\.\\w+")) { 99 | errors.put("email", "Email格式错误!"); 100 | } 101 | 102 | if (errors.size() > 0) { 103 | 104 | request.setAttribute("errors", errors); 105 | request.setAttribute("form", form); 106 | return "f:/regist.jsp"; 107 | } 108 | 109 | /* 110 | * 调用service的regist()方法 111 | */ 112 | try { 113 | userService.regist(form); 114 | } catch (UserException e) { 115 | /* 116 | * 1. 保存异常信息 117 | * 2. 保存form 118 | * 3. 转发到regist.jsp 119 | */ 120 | request.setAttribute("msg", e.getMessage()); 121 | request.setAttribute("form", form); 122 | return "f:/regist.jsp"; 123 | } 124 | 125 | 126 | request.setAttribute("msg", "恭喜,注册成功!"); 127 | return "f:/jsps/msg.jsp"; 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /BookStore/src/rj/bookstore/order/dao/OrderDao.java: -------------------------------------------------------------------------------- 1 | package rj.bookstore.order.dao; 2 | 3 | import cn.itcast.commons.CommonUtils; 4 | import cn.itcast.jdbc.TxQueryRunner; 5 | import org.apache.commons.dbutils.QueryRunner; 6 | import org.apache.commons.dbutils.handlers.BeanHandler; 7 | import org.apache.commons.dbutils.handlers.BeanListHandler; 8 | import org.apache.commons.dbutils.handlers.MapListHandler; 9 | import org.apache.commons.dbutils.handlers.ScalarHandler; 10 | import rj.bookstore.book.domain.Book; 11 | import rj.bookstore.order.entity.Order; 12 | import rj.bookstore.order.entity.OrderItem; 13 | 14 | import javax.print.attribute.standard.RequestingUserName; 15 | import java.sql.SQLException; 16 | import java.sql.Timestamp; 17 | import java.util.*; 18 | 19 | public class OrderDao { 20 | private QueryRunner qr = new TxQueryRunner(); 21 | 22 | public void addOrder(Order order){ 23 | try{ 24 | 25 | String sql = "insert into orders values(?,?,?,?,?,?)"; 26 | Timestamp timestamp = new Timestamp(order.getOrdertime().getTime()); 27 | Object[] params = {order.getOid(),timestamp,order.getTotal(), 28 | order.getState(),order.getOwner().getUid(), 29 | order.getAddress()}; 30 | 31 | qr.update(sql,params); 32 | 33 | 34 | }catch (SQLException e) { 35 | throw new RuntimeException(e); 36 | } 37 | } 38 | 39 | // 批处理 40 | public void addOrderItem(List orderItemList){ 41 | try{ 42 | 43 | String sql = "insert into orderitem values(?,?,?,?,?)"; 44 | Object[][] params = new Object[orderItemList.size()][]; 45 | for(int i = 0; i < orderItemList.size(); i ++) { 46 | OrderItem item = orderItemList.get(i); 47 | params[i] = new Object[]{item.getIid(),item.getCount(),item.getSubtotal(),item 48 | .getOrder().getOid(),item.getBook().getBid()}; 49 | } 50 | qr.batch(sql,params); 51 | 52 | }catch (SQLException e) { 53 | throw new RuntimeException(e); 54 | } 55 | } 56 | 57 | public List findById(String uid) { 58 | try { 59 | String sql = "select * from orders where uid=?"; 60 | List orderList = qr.query(sql, new BeanListHandler(Order.class), uid); 61 | 62 | for(Order order : orderList) { 63 | loadOrderItems(order); // 为 order 添加它的所有订单条目 64 | } 65 | 66 | return orderList; 67 | }catch (SQLException e) { 68 | throw new RuntimeException(e); 69 | } 70 | 71 | 72 | } 73 | 74 | private void loadOrderItems(Order order) throws SQLException { 75 | 76 | String sql = "select * from orderitem i,book b where i.bid = b.bid and oid = ?"; 77 | 78 | List> mapList = qr.query(sql, new MapListHandler(), order.getOid()); 79 | 80 | List orderItems = toOrderItemList(mapList); 81 | order.setOrderItemList(orderItems); 82 | 83 | } 84 | 85 | private List toOrderItemList(List> mapList) { 86 | List orderItemList = new ArrayList<>(); 87 | for(Map map:mapList) { 88 | OrderItem item = toOrderItem(map); 89 | orderItemList.add(item); 90 | } 91 | return orderItemList; 92 | } 93 | 94 | private OrderItem toOrderItem(Map map) { 95 | OrderItem orderItem = CommonUtils.toBean(map,OrderItem.class); 96 | Book book = CommonUtils.toBean(map,Book.class); 97 | 98 | orderItem.setBook(book); 99 | return orderItem; 100 | 101 | } 102 | 103 | public Order load(String oid) { 104 | try{ 105 | String sql = "select * from orders where oid = ?"; 106 | Order order = qr.query(sql, new BeanHandler(Order.class), oid); 107 | loadOrderItems(order); // 代码重用 108 | return order; 109 | }catch (SQLException e) { 110 | throw new RuntimeException(e); 111 | } 112 | } 113 | 114 | public int getState(String oid) { 115 | try { 116 | String sql = "select state from orders where oid = ?"; 117 | Number num = (Number) qr.query(sql,new ScalarHandler(),oid); 118 | return num.intValue(); 119 | }catch (SQLException e) { 120 | throw new RuntimeException(e); 121 | } 122 | } 123 | 124 | public void updateState(String oid,int state) { 125 | try { 126 | 127 | String sql = "update orders set state = ? where oid = ?"; 128 | qr.update(sql,state,oid); 129 | 130 | }catch (SQLException e) { 131 | throw new RuntimeException(e); 132 | } 133 | 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BookStoreSystem 2 | 基于 jsp + servlet + mysql 三层架构实现的网上书店系统 3 | 4 | ## 一、前言 5 | 该系统是简单的模仿 当当网 书店系统,==分为前端和后台两个部分==,目前并没有实现前后端的分离,本系统采用==三层架构==的设计思想完成前后端的交互,进而实现相对应的功能。采用的主要技术栈是: jsp + servlet + Mysql,其中包括 jsp 的三大组件,c3p0 连接池,等技术,运用的开发环境时 Idea9 + Mysql8.0。 6 | 7 | ## 二、相关技术: 8 | [1、三层架构设计思想](https://blog.csdn.net/qq_43619271/article/details/106538194) 9 | [2、ApacheDBUtils 详解用法](https://blog.csdn.net/qq_43619271/article/details/106491522) 10 | [3、c3p0连接池](https://blog.csdn.net/qq_43619271/article/details/106488884) 11 | 12 | 13 | ## 三、功能分析: 14 | 15 | ### 1、前台: 16 | 17 | a、用户模块: 18 | 19 | • 注册 20 | • 登录 21 | • 退出 22 | 23 | b、分类模块: 24 | 25 | > • 查看所有分类 26 | 27 | c、图书模块: 28 | 29 | > • 查询所有图书 30 | > • 按分类查询图书 31 | > • 查询图书详细(按id查) 32 | 33 | d、购物车模块: 34 | 35 | > • 添加购物车条目; 36 | > • 清空所有条目; 37 | > • 删除指定条目; 38 | > • 我的购物车(按用户查询购物车) 39 | 40 | e、订单模块: 41 | 42 | > • 生成订单; 43 | > • 我的订单(按用户查询订单) 44 | > • 按id查询订单 45 | > • 确认收货 46 | > • 付款功能(只是跳转到银行页面) 47 | > • 付款回调功能(由银行来调用我们这个方法,表示用户已经付款成功) 48 | 49 | ### 2、后台: 50 | 51 | a、管理员: 52 | 53 | > • 登录 54 | 55 | b、分类管理: 56 | 57 | > • 添加分类 58 | > • 查看所有分类 59 | > • 删除分类 60 | > • 按id查询 61 | > • 修改分类 62 | 63 | c、图书管理(我的) 64 | 65 | > • 查看所有图书 66 | > • 按id查询 67 | > • 删除图书 68 | > • 修改图书 69 | > • 添加图书(上传图片) 70 | 71 | ## 四、效果展示: 72 | 73 | ### 1、登录与注册: 74 | ==登录:== 75 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607102850818.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 76 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607102906975.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 77 | ==注册== 78 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607102924582.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 79 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607102939359.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 80 | 81 | ### 2、前台: 82 | ==首页:== 83 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607104046498.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 84 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607104101781.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 85 | ==分类查询== 86 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020060710412574.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 87 | ==我的购物车== 88 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607104140624.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 89 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607104154671.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 90 | ==我的订单== 91 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607104215530.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 92 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607104231160.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 93 | ==退出== 94 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020060710424390.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 95 | 96 | ### 3、后台: 97 | 98 | > 嘻嘻,本着后台能用就行的原则,相对于前台来说,后台就比较简陋了。 99 | 100 | ==管理员登录:== 101 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607104950451.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 102 | 103 | ==后台首页:== 104 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607105013502.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 105 | ==分类管理:== 106 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607105108304.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 107 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607105122645.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 108 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607105134669.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 109 | ==图书管理:== 110 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607105207238.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 111 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607105304869.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 112 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200607105320117.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNjE5Mjcx,size_16,color_FFFFFF,t_70#pic_center) 113 | 114 | ## 五、后记: 115 | 到此,小潘同学的网上书店系统就介绍完了如果在部署项目时遇到问题可以随时联系我。 116 | 在此非常==感谢 崔希凡 老师==的视频讲解,才使我完成了人生中的第一个 JavaWeb 项目,但是其中的一些技术还没有真正的搞懂,包括一些帮助类的实现都还没有运用成熟,后期会在深入的做一遍。 117 | 如果项目对您有帮助,别忘了点个 Star 和 关注哦! 118 | 感谢感谢! 119 | 120 | -------------------------------------------------------------------------------- /BookStore/web/css/style.css: -------------------------------------------------------------------------------- 1 | /*-- 2 | Author: W3layouts 3 | Author URL: http://w3layouts.com 4 | License: Creative Commons Attribution 3.0 Unported 5 | License URL: http://creativecommons.org/licenses/by/3.0/ 6 | --*/ 7 | /* reset */ 8 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,dl,dt,dd,ol,nav ul,nav li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;} 9 | article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section {display: block;} 10 | ol,ul{list-style:none;margin:0px;padding:0px;} 11 | blockquote,q{quotes:none;} 12 | blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;} 13 | table{border-collapse:collapse;border-spacing:0;} 14 | /* start editing from here */ 15 | a{text-decoration:none;} 16 | .txt-rt{text-align:right;}/* text align right */ 17 | .txt-lt{text-align:left;}/* text align left */ 18 | .txt-center{text-align:center;}/* text align center */ 19 | .float-rt{float:right;}/* float right */ 20 | .float-lt{float:left;}/* float left */ 21 | .clear{clear:both;}/* clear float */ 22 | .pos-relative{position:relative;}/* Position Relative */ 23 | .pos-absolute{position:absolute;}/* Position Absolute */ 24 | .vertical-base{ vertical-align:baseline;}/* vertical align baseline */ 25 | .vertical-top{ vertical-align:top;}/* vertical align top */ 26 | nav.vertical ul li{ display:block;}/* vertical menu */ 27 | nav.horizontal ul li{ display: inline-block;}/* horizontal menu */ 28 | img{max-width:100%;} 29 | /*end reset*/ 30 | /****-----start-body----****/ 31 | body{ 32 | text-align: center; 33 | background: url("../images/b4.jpg") 0px 0px no-repeat; 34 | background-size:cover; 35 | background-attachment: fixed; 36 | } 37 | .padding-all{ 38 | padding:100px; 39 | } 40 | 41 | .header { 42 | text-align: center; 43 | padding-bottom:75px; 44 | } 45 | .header h1 img{ 46 | width:7%; 47 | } 48 | 49 | p ,a{ 50 | font-family: 'Cormorant SC', serif; 51 | } 52 | .header h1 { 53 | font-size: 50px; 54 | color: #fff; 55 | font-family: 'Cormorant SC', serif; 56 | letter-spacing: 3px; 57 | margin: 0 auto; 58 | text-shadow: 1px 1px 4px #000; 59 | text-transform: uppercase; 60 | font-weight: 600; 61 | } 62 | 63 | 64 | .design-w3l{ 65 | width:36%; 66 | margin:0 auto; 67 | } 68 | 69 | .mail-form-agile { 70 | padding: 50px 40px; 71 | text-align: center; 72 | margin:0px; 73 | color: #000; 74 | margin:0 auto; 75 | } 76 | 77 | .padding { 78 | margin: 20px 0 30px; 79 | } 80 | ::-webkit-input-placeholder { /* Chrome/Opera/Safari */ 81 | color:#fff; 82 | } 83 | ::-moz-placeholder { /* Firefox 19+ */ 84 | color:#fff; 85 | } 86 | ::-ms-input-placeholder { /* IE 10+ */ 87 | color:#fff; 88 | } 89 | ::-moz-placeholder { /* Firefox 18- */ 90 | color:#fff; 91 | } 92 | .mail-form-agile input[type="text"], .mail-form-agile input[type="password"] { 93 | padding: 13px 10px; 94 | width: 92.5%; 95 | font-size: 16px; 96 | outline: none; 97 | background:transparent; 98 | border:0px; 99 | border-bottom: 1px solid #fff; 100 | border-radius: 0px; 101 | font-family: 'Open Sans', sans-serif; 102 | letter-spacing:1.6px; 103 | color:#fff; 104 | } 105 | 106 | .mail-form-agile input[type="submit"]{ 107 | font-size: 18px; 108 | padding: 10px 20px; 109 | letter-spacing:1.2px; 110 | border: none; 111 | text-transform: capitalize; 112 | outline: none; 113 | background: #03A9F4; 114 | color: #fff; 115 | cursor: pointer; 116 | margin: 0 auto; 117 | font-family: 'Open Sans', sans-serif; 118 | -webkit-transition-duration: 0.9s; 119 | transition-duration: 0.9s; 120 | } 121 | .mail-form-agile input[type="submit"]:hover { 122 | -webkit-transition-duration: 0.9s; 123 | transition-duration: 0.9s; 124 | background:rgba(91, 157, 214, 0.76); 125 | } 126 | 127 | .footer{ 128 | text-align: center; 129 | padding-top:75px; 130 | letter-spacing:1.6px; 131 | line-height:22px; 132 | } 133 | .footer p { 134 | font-size: 16px; 135 | color: #fff; 136 | margin: 0px; 137 | letter-spacing:1.4px; 138 | } 139 | .footer p a { 140 | color:#03A9F4; 141 | font-weight:blod; 142 | -webkit-transition-duration: 0.8s; 143 | transition-duration: 0.8s; 144 | } 145 | .footer p a:hover { 146 | color: #fff; 147 | -webkit-transition-duration: 0.8s; 148 | transition-duration: 0.8s; 149 | } 150 | 151 | 152 | 153 | 154 | 155 | /*-- responsive media queries --*/ 156 | 157 | 158 | @media screen and (max-width:1440px){ 159 | .design-w3l { 160 | width: 40%; 161 | } 162 | .header h1 img{ 163 | width:8.5%; 164 | } 165 | 166 | } 167 | 168 | @media screen and (max-width:1366px){ 169 | 170 | 171 | } 172 | 173 | @media screen and (max-width:1280px){ 174 | .design-w3l { 175 | width: 46%; 176 | } 177 | .mail-form-agile { 178 | padding: 40px; 179 | } 180 | } 181 | 182 | 183 | @media screen and (max-width:1080px){ 184 | .padding-all{ 185 | padding:80px 50px; 186 | } 187 | .header h1 img{ 188 | width:8%; 189 | } 190 | .header h1 { 191 | font-size: 44px; 192 | } 193 | } 194 | 195 | 196 | @media screen and (max-width:991px){ 197 | .design-w3l { 198 | width: 54%; 199 | } 200 | 201 | 202 | } 203 | 204 | 205 | @media screen and (max-width:800px){ 206 | .padding-all{ 207 | padding:75px 30px; 208 | } 209 | .design-w3l { 210 | width: 60%; 211 | } 212 | .header h1 { 213 | font-size: 40px; 214 | } 215 | .header { 216 | padding-bottom: 50px; 217 | } 218 | .footer { 219 | padding-top: 50px; 220 | } 221 | 222 | 223 | 224 | } 225 | 226 | 227 | @media screen and (max-width:667px){ 228 | .design-w3l { 229 | width: 75%; 230 | } 231 | 232 | } 233 | 234 | @media screen and (max-width:640px){ 235 | .header h1 img { 236 | width: 10%; 237 | } 238 | .header h1 { 239 | font-size: 36px; 240 | } 241 | .mail-form-agile { 242 | padding: 35px 30px; 243 | } 244 | .mail-form-agile input[type="text"], .mail-form-agile input[type="password"] { 245 | font-size: 14px; 246 | } 247 | .mail-form-agile input[type="submit"] { 248 | font-size: 16px; 249 | } 250 | .footer p { 251 | font-size: 14px; 252 | } 253 | 254 | } 255 | 256 | 257 | @media screen and (max-width:568px){ 258 | .padding-all { 259 | padding: 60px 20px; 260 | } 261 | 262 | .header h1 { 263 | font-size: 32px; 264 | } 265 | 266 | } 267 | 268 | @media screen and (max-width:480px){ 269 | .header h1 { 270 | font-size: 28px; 271 | } 272 | .design-w3l { 273 | width: 92%; 274 | } 275 | .mail-form-agile input[type="submit"] { 276 | font-size: 14px; 277 | } 278 | .footer p { 279 | font-size: 13px; 280 | } 281 | 282 | } 283 | 284 | @media screen and (max-width:414px){ 285 | .padding-all { 286 | padding:50px 10px; 287 | } 288 | .header h1 { 289 | font-size: 24px; 290 | } 291 | 292 | 293 | 294 | } 295 | 296 | @media screen and (max-width:384px){ 297 | .header { 298 | padding-bottom: 30px; 299 | } 300 | .header h1 { 301 | font-size: 22px; 302 | } 303 | .design-w3l { 304 | width: 100%; 305 | } 306 | 307 | 308 | 309 | } 310 | 311 | @media screen and (max-width:320px){ 312 | .header h1 { 313 | font-size: 18px; 314 | } 315 | 316 | 317 | } 318 | 319 | 320 | 321 | 322 | 323 | -------------------------------------------------------------------------------- /BookStore/.idea/uiDesigner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /BookStore/web/menu/mymenu.js: -------------------------------------------------------------------------------- 1 | /* 2 | * MenuBar只负责生成
,不会实现功能。 3 | * MenuBar的add()方法:bar.add("menu1", "item1", "http://www.qdmmy6.com/"); 4 | * MenuBar的menus属性是一个数组(其时它是一个Map),每个元素对应一个menu。 5 | * 数组中的元素还是一个数组,这个数组中的元素是MenuItem对象。 6 | * add()方法首先查找menus["menu1"]元素(即名为"menu1"的菜单)是否存在, 7 | * 如果存在,使用"item1"与"http://www.qdmmy6.com/"创建MenuItem对象。然后把MenuItem对象添加到menus["menu1"]中去。 8 | * 如果不存在,先创建menus["menu1"],在把MenuItem添加进去。 9 | */ 10 | function Q6MenuBar(objName, barName) { 11 | this.obj = objName; 12 | this.barName = barName; 13 | this.config = { 14 | topHeight:null, 15 | bottomHeight:null, 16 | width:null, 17 | radioButton:true, 18 | imgDir:"img/" 19 | }; 20 | this.icon = {jiaIcon:"jia.png",jianIcon:"jian.png"}; 21 | this.colorStyle = 2; 22 | this.colors = []; 23 | this.colors[0] = { 24 | menuBgColor:"rgb(246,133,1)", 25 | menuBorderColor:"rgb(236,171,87)", 26 | itemBgColor:"rgb(38,38,38)", 27 | itemBorderColor:"rgb(100,100,100)", 28 | itemBgMoveColor:"rgb(32,145,177)", 29 | itemBorderMoveColor:"rgb(119,171,113)", 30 | itemMoveColor:"rgb(255,255,255)", 31 | itemColor:"rgb(255,255,255)", 32 | menuBarColor:"rgb(255,255,255)", 33 | menuContentColor:"rgb(255,255,255)" 34 | }; 35 | this.colors[2] = { 36 | itemBgMoveColor:"rgb(246,133,1)", 37 | itemBorderMoveColor:"rgb(236,171,87)", 38 | menuBgColor:"rgb(78,78,78)",//38 39 | menuBorderColor:"rgb(102,102,102)",//100 40 | itemBgColor:"rgb(32,145,177)", 41 | itemBorderColor:"rgb(119,171,113)", 42 | itemMoveColor:"rgb(255,255,255)", 43 | itemColor:"rgb(255,255,255)", 44 | menuBarColor:"rgb(255,255,255)", 45 | menuContentColor:"rgb(255,255,255)" 46 | }; 47 | this.colors[1] = { 48 | menuBgColor:"rgb(25,119,176)", 49 | menuBorderColor:"rgb(211,211,211)", 50 | itemBgColor:"rgb(121,201,236)", 51 | itemBorderColor:"rgb(68,141,174)", 52 | itemBgMoveColor:"rgb(110,172,44)", 53 | itemBorderMoveColor:"rgb(172,221,74)", 54 | itemMoveColor:"rgb(255,255,255)", 55 | itemColor:"rgb(255,255,255)", 56 | menuBarColor:"rgb(255,255,255)", 57 | menuContentColor:"#333333" 58 | }; 59 | this.colors[3] = { 60 | menuBgColor:"rgb(159,153,138)", 61 | menuBorderColor:"rgb(142,132,107)", 62 | itemBgColor:"rgb(254,238,189)", 63 | itemBorderColor:"rgb(164,91,19)", 64 | itemBgMoveColor:"rgb(252,211,61)", 65 | itemBorderMoveColor:"rgb(164,91,19)", 66 | itemMoveColor:"rgb(76,48,0)", 67 | itemColor:"rgb(0,116,199)", 68 | menuBarColor:"rgb(76,48,0)", 69 | menuContentColor:"rgb(76,48,0)" 70 | }; 71 | this.font = { 72 | }; 73 | this.menus = []; 74 | //
' + barName + '
75 | } 76 | 77 | /* 78 | * 添加方法 79 | * 首先查看this.menus[menuName]这个菜单(就是一个数组)是否存在。 80 | * 如果不存在,先创建这个菜单(数组)。 81 | * 使用menuItemName和url创建MenuItem对象,把MenuItem对象添加到菜单(数组)尾部。 82 | * frameName -- 指定在哪个帧中打开页面 83 | */ 84 | Q6MenuBar.prototype.add = function(menuName, menuItemName, url, frameName) { 85 | if (!this.menus[menuName]) { 86 | this.menus[menuName] = []; 87 | } 88 | var len = this.menus[menuName].length; 89 | this.menus[menuName][len] = new MenuItem(menuItemName, url, frameName); 90 | 91 | // MenuItem类 92 | function MenuItem(menuItemName, url, frameName) { 93 | this.menuItemName = menuItemName; 94 | this.url = url; 95 | this.frameName = frameName; 96 | } 97 | } 98 | /* 99 | MenuBar的toString()方法 100 | 该方法会生成与MenuBar相关的HTML代码,然后遍历menus属性,生成每个菜单对应HTML代码。 101 | */ 102 | Q6MenuBar.prototype.toString = function() { 103 | // menuBar对应的
104 | var str = '