收藏 分享(赏)

电子商务网站开发--小型网上书店课程设计(JSP)(含完整源代码).doc

上传人:cjc2202537 文档编号:4837365 上传时间:2019-01-15 格式:DOC 页数:39 大小:667.50KB
下载 相关 举报
电子商务网站开发--小型网上书店课程设计(JSP)(含完整源代码).doc_第1页
第1页 / 共39页
电子商务网站开发--小型网上书店课程设计(JSP)(含完整源代码).doc_第2页
第2页 / 共39页
电子商务网站开发--小型网上书店课程设计(JSP)(含完整源代码).doc_第3页
第3页 / 共39页
电子商务网站开发--小型网上书店课程设计(JSP)(含完整源代码).doc_第4页
第4页 / 共39页
电子商务网站开发--小型网上书店课程设计(JSP)(含完整源代码).doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、完整的简单 jsp 网上书店详细实例电子商务网站开发-小型网上书店课程设计(JSP)其中包括的详细需求、业务分析、数据库、源代码我们使用 JSP 和 Java Bean 来构建一个网上书店。介绍的例子可以分成两大部分,第一部分是普通程序,用于客户在网上选购图书,第二部分是管理程序,用于在服务器端处理客户的定单。客户端程序由以下几个部分构成:default.jsp:会员登录界面(首页);checklogon.jsp:检测登录代码和密码是否一致,根据由 JavaBean 返回的结果显示不同的信息。BuyerBean:会员的合法性检验所用的 Bean;booklist.jsp:给登录会员显示当前书店

2、中可供选择的图书;addcart.jsp:将所选的图书加入购物车;shoppingcart.jsp:查看购物车的内容;本例的数据库采用 Access(.MDB 数据库) ,对数据库的访问采用便于理解的 JDBC-ODBC 方式,在使用本例前先在本地数据库建立一个 ODBC 数据源:bookstore 。设置步骤如下:(1)在开始-设置-控制面版(Win98、NT4.0)中选取 “数据源(ODBC) ”;在 Win 2000 Professional 和 Server 中分别位于“开始-设置-控制面版-管理工具”和 “开始- 程序- 管理工具 ”下。(2)启动“数据源(ODBC) ”配置程序,界

3、面如图 15-1 所示。图 15-1 ODBC 数据源管理界面(3)在图 15-1 中“系统 DSN”选项下单击“添加”按钮,来添加一个系统的数据源(DSN) ,则出现如图 15-2 所示数据源驱动程序选择界面:图 15-2 数据源驱动程序选择界面(4)在图 15-2 中选择“Microsoft Access Driver (*.mdb)”单击“完成”加载Access 数据库的驱动,则出现如图 15-3 所示数据库 ODBC 安装界面:图 15-3 数据库 ODBC 安装界面(5)在图 15-3 中单击“选择(S)”按钮,启动一个类似资源管理器的界面来选择数据库,如图 15-4 所示,在图 1

4、5-4 所示的界面中选择bookstore.mdb。图 15-4 数据库选择界面15.1 会员登录做一个网上书店,在顾客开始购书之前,必须要记录用户的一些信息以便用户在不同的分类、不同的页面购书时,最后能够去收款台统一结帐,而且网上书店同时有许多人在选购图书,也要求对不同的顾客进行区分,我们可以要求顾客在购书之前进行注册成为会员,以后只用会员代码和密码即可登录。为了便于说明现在的电子商务网站,由 JSP 做页面表现,由 Java Bean做应用逻辑的结构,在本例中将会员登录程序分成两大部分:一、Java Bean 用于对数据库的操作,验证用户名和密码是否正确;二、JSP 页面部分,用于供用户会

5、员代码和密码以及显示验证结果。15.1.1 会员登录 Java Bean我们网上书店中的会员信息的库结构如图 15-5 所示:图 15-5 会员信息库其中 memberID 是主键,用于区分不同的会员,新会员注册时只能使用没有被使用的用户代码。在验证时我们只要使用验证用户的 memberID 和其 pwd 是否一致即可判断该用户是否合法,如果合法则其登录次数加 1。下面是用户验证部分的 Java Bean 的代码清单 15-1 BuyerBean.Java/* *BuyerBean.Java 1.10.2001 *Copyright 2000, 2001 by cuug llp.*本 Bean

6、 中有两个 set 方法和两个 get 方法:*setMemberID() 对 BuyerBean 中的 memberID 属性进行赋值;*setPwd()对 BuyerBean 中的 pwd 属性进行赋值;*getLogontimes() 取该会员登录的次数*getMenberName()获得该会员的真实姓名,用于显示欢迎信息。*main()方法用于将 BEAN 作为一个 Application 进行测试时使用,正式发布时可以删除。*/package cuug;import Java.sql.*;public class BuyerBean private String memberID =

7、 null ; /会员IDprivate String memberName = null; /会员姓名private String pwd = null; /密码private int logontimes = -1; /登录的次数private static String strDBDriver = “sun.jdbc.odbc.JdbcOdbcDriver”; /JDBC驱动private static String strDBUrl = “jdbc:odbc:bookstore”; /数据源 ,private Connection conn =null; /连接private Resu

8、ltSet rs = null; /结果集public BuyerBean ()/加载JDBC-ODBC驱动try Class.forName(strDBDriver );/捕获异常catch(Java.lang.ClassNotFoundException e)System.err.println(“BuyerBean():” + e.getMessage();/获得登录次数,登录的会员的名字也在该方法调用时获得public int getLogontimes()String strSql = null;tryconn = DriverManager.getConnection(strDBU

9、rl);Statement stmt = conn.createStatement();strSql = “Select logonTimes,membername from buyerInfo where memberID = ” + memberID + “ and pwd =” + pwd + “”;rs = stmt.executeQuery(strSql);while (rs.next()/ 登录的次数logontimes = rs.getInt(“logonTimes”);/会员姓名memberName = rs.getString(“membername”); rs.close(

10、);/如果是合法会员则将其登录次数加1if (logontimes != -1 ) strSql = “Update buyerInfo set logonTimes = logonTimes +1 where memberID = ” + memberID + “”;stmt.executeUpdate(strSql);stmt.close();conn.close();/捕获异常catch(SQLException e)System.err.println(“BuyerBean.getLogontimes():” + e.getMessage();return logontimes ;/设

11、置 memberID 属性;public void setMemberID(String ID)this.memberID = ID;/设置 pwd 属性public void setPwd(String password)this.pwd = password;/获得该会员的真实姓名,必须在取该会员登录的次数之后才能被赋予正确的值public String getMemberName()return memberName;/测试Bean中的各个方法是否能够正常工作public static void main(String args)BuyerBean buyer = new BuyerBe

12、an();buyer.setMemberID(“abcd”);buyer.setPwd(“1234”);System.out.println(buyer.getLogontimes();System.out.println(buyer.getMemberName();在 BuyerBean 中用了 package cuug; 在发布到 WEB SERVER 时,可以用JAR(JDK 中带的打包工具)把编译后的 BuyerBean.class 打包成 JAR 文件在服务器的环境变量 classpath 中给予指定,或者在服务器 classpath 环境变量指定的目录下建一个cuug 文件夹,把

13、BuyerBean.class 放到 cuug 目录下。15.1.2 会员登录 htm 与 JSP会员登录要由两个部分来完成,第一个页面用于会员输入其 ID 和密码,当然首页还可以加一些广告等的其它信息,在本例中略过。清单 15-2 default.htmCUUG ON LINE BOOK STORE MEMBER LOGINCUUG 网上书店会员登录页请输入会员代号和密码: 会员代码: 密码: 在本例中提供了一个文本框供用户输入会员代号和登录密码,其运行结果如图 15-6所示,当会员输入其代码和密码后调用 checklogon.jsp 来验证该网络用户是否是合法会员。图 15-6 会员登录页

14、在 checklogon.jsp 中接收从 default.htm 中由用户所填的会员代码和密码,把它传给BuyerBean,由 BuyerBean 判断该用户的会员代码和密码的正确性,若正确显示欢迎信息;若不正确,则提供一个重新登录的链接。Checklogon.jsp 的源代码如下:清单 15-3 checklogon.jspCUUG ON LINE BOOK STORE MEMBER LOGINCUUG 网上书店0)session.putValue(“memberID“,memberID);%欢迎你第次来到 CUUG 网上书店进入书店对不起,你的用户名和密码不一致重新登录登录正确时的结果如

15、图 15-7 所示,错误时的结果如图 15-8 所示。图 15-7 用户登录正确(会员 abcd 的真实姓名是 cuug001)图 15-8 用户登录错误15.2 选书会员登录之后,合法的用户将可以看到本书店中可供选择的图书,并且将他感兴趣的书放入“购物车” ,在去“收银台”结帐之前,该用户可以放弃购买其购物车中的任何一本书。在此处我们用 BookBean 来获取图书的信息,在 Booklist.jsp 中显示这些书。在会员选书部分,我们仍用 Java Bean 来操作数据库,用 jsp 来做页面表现。15.2.1 选书 Java Bean图书信息的表结构如图 15-9 所示,为了便于说明,在

16、本例中 price 也设置成了String 型,在实际应用中应该设置成货币或浮点型:图 15-9 图书信息的表结构其中,bookISBN 是主键,区分不同的图书。Java Bean 要根据不同的图书的bookISBN 来获得其相应的书名、作者、出版社、价格、简介等信息。同时 Java Bean还要有列出书店中所有图书的信息的功能。清单 15-4 BookBeanJava/* *BuyerBean.Java 1.10.2001 *Copyright 2000, 2001 by cuug ,llp.*本 Bean 中的各个方法的功能介绍如下:*setBookISBN():设置图书的编号,同时根据编

17、号更新相应的书名、作者、出版社、价格*和简介*getBookList() 取得书库中全部书的书名、出版社、价格、作者等信息;*getBookISBN() 取得当前图书的编号 ;*getBookName()取得当前图书的书名;*getBookAuthor()取得当前图书的作者;*getPublisher()取得当前图书的出版社信息;*getPrice()取得当前图书的价格;* getIntroduce()取得当前图书的简介信息。*main()方法用于将 BEAN 作为一个 Application 进行测试时使用,正式发布时可以删除。*/package cuug;import Java.sql.*

18、;public class BookBean private String bookISBN = null; /图书编号private String bookName = null; /书名private String bookAuthor = null; /作者private String publisher = null; /出版社private String introduce = null; /简介private String price = null; /价格private static String strDBDriver = “sun.jdbc.odbc.JdbcOdbcDriv

19、er“;private static String strDBUrl = “jdbc:odbc:bookstore“;private Connection conn =null;private ResultSet rs = null;public BookBean()/加载驱动try Class.forName(strDBDriver );catch(Java.lang.ClassNotFoundException e)System.err.println(“BookBean ():“ + e.getMessage();/取当前书库中全部图书信息public ResultSet getBook

20、List()String strSql = null;try/建立与数据库的连接conn = DriverManager.getConnection(strDBUrl);Statement stmt = conn.createStatement();strSql = “Select bookISBN,bookName,bookAuthor,publisher,price from bookInfo “;rs = stmt.executeQuery(strSql);/捕获异常catch(SQLException e)System.err.println(“BookBean.getBookList

21、():“ + e.getMessage();return rs ;/根据图书的编号给图书的其他信息赋值private void getBookInfo(String ISBN)String strSql = null;bookName = null;bookAuthor = null;publisher = null;introduce = null;price = null;try/建立和数据库的连接conn = DriverManager.getConnection(strDBUrl);Statement stmt = conn.createStatement();strSql = “Se

22、lect * from bookInfo where bookISBN = “ + ISBN + “;rs = stmt.executeQuery(strSql);while (rs.next()bookName = rs.getString(“bookName“);bookAuthor = rs.getString(“bookAuthor“);publisher = rs.getString(“publisher“);introduce = rs.getString(“introduce“);price = rs.getString(“price“);/捕获异常catch(SQLExcept

23、ion e)System.err.println(“BookBean.getBookList():“ + e.getMessage();/给图书的编号赋值,同时调用函数给图书的其他信息赋值public void setBookISBN (String ISBN)this.bookISBN = ISBN;getBookInfo(bookISBN);/取图书编号public String getBookISBN ()return bookISBN ;/取书名public String getBookName()return bookName ;/取作者信息public String getBook

24、Author()return bookAuthor;/取出版社信息public String getPublisher()return publisher;/取图书简介public String getIntroduce()return introduce ;/取图书价格public String getPrice()return price;/将Bean 作为一个 application进行测试用public static void main(String args)BookBean book = new BookBean ();book.setBookISBN(“7-5053-5316-4

25、“);System.out.println(book.getBookName();System.out.println(book.getBookAuthor();System.out.println(book.getPublisher();System.out.println(book.getIntroduce();System.out.println(book.getPrice();tryResultSet tmpRS = book.getBookList();while (tmpRS.next()System.out.println(tmpRS.getString(“bookname“);

26、tmpRS.close();/捕获异常catch(Exception e)System.err.println(“main()“ + e.getMessage();15.2.2 选书JSP会员正确登录之后,即可进入书店进行选书,我们已经在 checklogon.jsp 中将会员的代码(memberID)放入系统的 session 中,为了保证用户只能从主页面登录进入书店,我们在给会员显示可供选择的图书之前,先检查 session 中是否有 memberID 的合法值,如果没有则提示用户先去登录。清单 15-5 booklist.jspCUUG Book Store On Line -membe

27、r:CUUG 网上书店请先登录 ,然后再选书登录书名作者出版社定价“)加入购物车查看购物车已经登录过的会员和没有登录过的会员进入该页面是的结构分别如图 15-10 和图15-11 所示:正确登录的会员的会员代码在浏览器的标题栏显示为:member:“会员代码” 。图 15-10 会员 abcd 正确登录图 15-11 会员未登录直接来选书在本例中利用 JavaScript 语句定义了一个函数来将所调用另外的一个 jsp 来处理把书加入购物车的操作:该函数用于打开 addcart.jsp 并切将图书编号作为参数传给 addcart.jsp。addcart.jsp 利用 Cookie 来保存所选购

28、的图书信息,Cookie 相当于一个购物车。为了与其他的 Cookie 变量区分,每个写入 Cookie 的图书编码前面都加上“ISBN ”作为标志,向购物车中加入图书的代码如下:清单 15-6 addcart.jspfunction Timer()setTimeout(“self.close()“,10000)购物车 CUUG 网上订书系统图书已经成功放入购物车! 查看购物车 SHOPPING CART提交定单 ORDER(此窗口将为您在 10 秒内自动关闭,您的商品已经安全地保存在购物车中。 )在 addcart.jsp 中利用 JavaScript 定义了一个函数 Timer() ,由它

29、来控制该窗口的显示时间() 。继续购买部分也是由 JavaScript 定义的函数来控制关闭本窗口。其运行结果如图 15-12 所示。图 15-12 加入购物车无论从图 15-12 还是图 15-13 所示的界面中,都提供了一个查看购物车的超链接,查看购物车的程序如下所示,它从 Cookie 中取出图书的编号,并将它传给BookBean,由 BookBean 来获得图书的详细资料。查看购物车的 JSP 代码shoppingcart.jsp 代码如下:清单 15-7 shoppingcart.jsp查看购物车 -member:CUUG 网上书店购物车ISBN书名单价数量“ name=“num“

30、readonly“删除返回首页清空购物车 修改数量 填写提交订单查看购物车的结果如图 15-13 所示:图 15-13 查看购物车内容在查看购物车内容时提供了一个删除图书的功能,其目的是从购物车删除不想购买的图书,其源代码如下:清单 15-8 delbook.jsp删除图书 本例中利用 jsp:forward 动作在删除图书动作完成之后,将页面继续转向购物车页面。即图 15-14 只显示一瞬间,浏览器的内容由成为购物车内容的页面。图 15-14 删除图书的页面如果一个会员选了很多书,逐个删除比较麻烦。为了方便会员放弃选购的所有图书,重新开始选书,本例提供了清空购物车程序(emptycart.j

31、sp) ,用于清空购物车,其原理与删除图书相同,只是把全部的 Cookie 中图书的有关的内容都清空了。其代码如下:清单 15-9 emptycart.jsp清空购物车图 15-15 清空购物车的页面从图书选择页面和购物车页面,点图书名称,都可以查看图书的详细信息,查看图书详细信息的 jsp 仍用 BookBean 来获取图书的详细信息,只是在该页中可以看到更加详细的信息:清单 15-10 bookinfo.jsp图书信息ISBN书名出版社作者/ 译者图书价格内容简介“)加入购物车查看购物车返回首页其运行结果如图 15-16 所示。图 15-16 图书详细信息15.3 定单提交及查询用户一旦确

32、定购物车中所选的图书都是其所要购买的,就要到去提交其定单,以便书店按照相应的方式进行处理。而且,为方便用户是否已经提交定单,及定单的状态,本例提供了定单查询功能。在此处我们用 OrderBean 来将定单提交到数据库中,在order.jsp 中显示并提交定单信息,queryorder.jsp 来查询定单。在会员选书部分,我们仍用 Java Bean 来操作数据库,用 jsp 来做页面表现。15.3.1 定单提交 Java Bean为了减少数据冗余,定单信息由两张表来记录其信息:orderInfo,记录定单的有关公用信息,orderdetail,记录该定单包含哪些书籍及数量,表结构分别如下:图

33、15-17 定单信息表结构图 15-18 定单详细所有的对数据库的操作都由 JavaBean 来完成,其代码如下:清单 15-11 OrderBean.Javapackage cuug;import Java.sql.*;public class OrderBean private static String strDBDriver = “sun.jdbc.odbc.JdbcOdbcDriver“;private static String strDBUrl = “jdbc:odbc:bookstore“;private Connection conn =null;private Result

34、Set rs = null;private Java.lang.String bookinfo = null;private Java.lang.String oderprice = null;private Java.lang.String orderDate = null;private Java.lang.String orderID = null;private Java.lang.String orderRem = null;private Java.lang.String receiverAddress = null;private Java.lang.String receive

35、rName = null;private Java.lang.String receiverZip = null;private Java.lang.String userID = null;public OrderBean()try Class.forName(strDBDriver );catch(Java.lang.ClassNotFoundException e)System.err.println(“OrderBean ():“ + e.getMessage();public static void main(String args)/* 返回定单的总价。* return Java.

36、lang.String*/public Java.lang.String getOderprice() return oderprice;/*返回定单的日期 。* return Java.lang.String*/public Java.lang.String getOrderDate() orderDate = new Java.util.Date().toString();return orderDate;/* 返回定单的 ID 号。* return Java.lang.String*/public Java.lang.String getOrderID() return orderID;

37、/* 返回定单的备注信息。* return Java.lang.String*/public Java.lang.String getOrderRem() return orderRem;/* 返回接收者的地址* return Java.lang.String*/public Java.lang.String getReceiverAddress() return receiverAddress;/* 返回接收者的姓名。* return Java.lang.String*/public Java.lang.String getReceiverName() return receiverName;/* 返回接收者的邮政编码。* return Java.lang.String*/public Java.lang.String getReceiverZip() return receiverZip;/* 获得用户 ID。* return Java.lang.String*/public Java.lang.String getUserID() return userID;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 课程设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报