【Jsp精品源码栏目提醒】:网学会员,鉴于大家对Jsp精品源码十分关注,论文会员在此为大家搜集整理了“【精品】电子商务网站开发--小型网上书店课程设计(JSP) - 大学课件”一文,供大家参考学习!
网上书店实例 在本章中我们使用
JSP 和 Java Bean 来构建一个网上书店。
本章介绍的例子可以分成两大部分,第一部分是普通程序,用于客户在网上选购图书,第二部分是管理程序,用于在服务器端处理客户的定单。
客户端程序由以下几个部分构成: default.
jsp:会员登录界面首页; checklogon.
jsp:检测登录代码和密码是否一致,根据由 JavaBean 返回的结果显示不同的信息。
BuyerBean:会员的合法性检验所用的 Bean; booklist.
jsp:给登录会员显示当前书店中可供选择的图书; addcart.
jsp:将所选的图书加入购物车; shoppingcart.
jsp:查看购物车的内容; 本例的数据库采用 Access(.MDB 数据库) ,对数据库的访问采用便于理解的JDBC-ODBC 方式,在使用本例前先在本地数据库建立一个 ODBC 数据源:bookstore。
设置步骤如下: ” (1)在开始-gt设置-gt控制面版(Win98、NT4.0)中选取“数据源(ODBC);在 Win2000 Professional 和 Server 中分别位于“开始-gt设置-gt控制面版-gt管理工具”和“开始-gt程序-gt管理工具”下。
(2)启动“数据源(ODBC) ”配置
程序,界面如图 15-1 所示。
图 15-1 ODBC 数据源管理界面 (3)在图 15-1 中“系统 DSN”选项下单击“添加”按钮,来添加一个
系统的数据源 ,则出现如图 15-2 所示数据源驱动程序选择界面:(DSN) 图 15-2 数据源驱动程序选择界面 (4)在图 15-2 中选择“Microsoft Access Driver .mdb”单击“完成”加载 Access 数据库的驱动,则出现如图 15-3 所示数据库 ODBC 安装界面: 图 15-3 数据库 ODBC 安装界面 (5)在图 15-3 中单击“选择(S)…”按钮,启动一个类似资源管理器的界面来选择数据库,如图 15-4 所示,在图 15-4 所示的界面中选择 bookstore.mdb。
图 15-4 数据库选择界面 15.1 会员登录 做一个网上书店,在顾客开始购书之前,必须要记录用户的一些信息以便用户在不同的分类、不同的页面购书时,最后能够去收款台统一结帐,而且网上书店同时有许多人在选购图书,也要求对不同的顾客进行区分,我们可以要求顾客在购书之前进行注册成为会员,以后只用会员代码和密码即可登录。
为了便于说明现在的电子商务网站,由
JSP 做页面表现,由 Java Bean 做应用逻辑的结构,在本例中将会员登录程序分成两大部分:一、Java Bean 用于对数据库的操作,验证用户名和密码是否正确;二、
JSP 页面部分,用于供用户会员代码和密码以及显示验证结果。
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 中有两个 set 方法和两个 get 方法: setMemberID— 对 BuyerBean 中的 memberID 属性进行赋值; setPwd—对 BuyerBean 中的 pwd 属性进行赋值; getLogontimes— 取该会员登录的次数 getMenberName()获得该会员的真实姓名,用于显示欢迎信息。
main方法用于将 BEAN 作为一个 Application 进行测试时使用,正式发布时可以删除。
/package cuugimport Java.sql.public class BuyerBean private String memberID null //会员ID private 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 ResultSet rs null //结果集 public BuyerBean //加载JDBC-ODBC驱动 try Class.forNamestrDBDriver //捕获异常 catchJava.lang.ClassNotFoundException e System.err.println“BuyerBean:” e.getMessage //获得登录次数,登录的会员的名字也在该方法调用时获得 public int getLogontimes String strSql null try conn DriverManager.getConnectionstrDBUrl Statement stmt conn.createStatement strSql “Select logonTimesmembername from buyerInfo where memberID ‘” memberID “’ and pwd ’” pwd “’” rs stmt.executeQuerystrSql while rs.next // 登录的次数 logontimes rs.getInt“logonTimes” //会员姓名 memberName rs.getString“membername” rs.close //如果是合法会员则将其登录次数加1 if logontimes -1 strSql “Update buyerInfo set logonTimes logonTimes 1 where memberID ‘” memberID “’” stmt.executeUpdatestrSql stmt.close conn.close //捕获异常 catchSQLException e System.err.println“BuyerBean.getLogontimes:” e.getMessage return logontimes //设置 memberID 属性;public void setMemberIDString ID this.memberID ID //设置 pwd 属性public void setPwdString password this.pwd pass
word //获得该会员的真实姓名,必须在取该会员登录的次数之后才能被赋予正确的值public String getMemberName return memberName//测试Bean中的各个方法是否能够正常
工作public static void mainString args BuyerBean buyer new BuyerBean buyer.setMemberID“abcd” buyer.setPwd“1234” System.out.printlnbuyer.getLogontimes System.out.printlnbuyer.getMemberName 在 BuyerBean 中用了 package cuug 在发布到 WEB SERVER 时,可以用 JAR(JDK中带的打包工具)把编译后的 BuyerBean.class 打包成 JAR 文件在服务器的环境变量classpath 中给予指定,或者在服务器 classpath 环境变量指定的目录下建一个 cuug 文件夹,把 BuyerBean.class 放到 cuug 目录下。
15.1.2
会员登录 htm 与
JSP 会员登录要由两个部分来完成,第一个页面用于会员输入其 ID 和密码,当然首页还可以加一些广告等的其它信息,在本例中略过。
清单 15-2 default.htm ltcontentType”text/htmlcharsetgb2312”gt ltHTMLgt lt— Copyright 1999 cuugliu. ltHEADgt ltTITLEgtCUUG ON LINE BOOK STORE – MEMBER LOGINlt/TITLEgt lt/HEADgt ltBODY bgcolor”white”gt ltH1 align”center”gtCUUG 网上书店lt/H1gt ltH2 align”center”gt会员登录页lt/H2gt ltPgtampnbsplt/Pgt ltPgtampnbsplt/Pgt ltCENTERgt ltFORM METHODPOST ACTION”checklogon.
jsp”gt ltBRgt ltfont size5 color”green”gt 请输入会员代号和密码: ltbrgt 会员代码:ltinput TYPE”text” namememberID gt ltBRgt 密ampnbspampnbspampnbspampnbsp码:ltinput TYPE”password” namepwd gt ltBRgt ltbrgt ltINPUT TYPEsubmit namesubmit Value”登录”gt lt/fontgt lt/FORMgt lt/CENTERgt lt/BODYgt lt/HTMLgt 在本例中提供了一个文本框供用户输入会员代号和登录密码,其运行结果如图 15-6 所示,当会员输入其代码和密码后调用 checklogon.
jsp 来验证该
网络用户是否是合法会员。
图 15-6 会员登录页 在 checklogon.
jsp 中接收从 default.htm 中由用户所填的会员代码和密码,把它传给BuyerBean,由 BuyerBean 判断该用户的会员代码和密码的正确性,若正确显示欢迎信息;若不正确,则提供一个重新登录的链接。
Checklogon.
jsp 的
源代码如下: 清单 15-3 checklogon.
jsp ltDOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”gt lt page language”Java” contentType”text/htmlcharsetGB2312”gt ltjsp:useBean class”cuug.BuyerBean” id”buyer” scope”page”gtlt/
jsp:useBeangt ltHTMLgt ltHEADgt ltMETA name”CHECKLOGON” gt ltTITLEgt CUUG ON LINE BOOK STORE – MEMBER LOGIN lt/TITLEgt lt/HEADgt ltBODY BGCOLOR”FFFFFF”gt ltH1 align”center”gtCUUG 网上书店lt/H1gt lt String memberID request.getParameter“memberID” String pwd request.getParameter“pwd” buyer.setMemberIDmemberID buyer.setPwdpwdgtlt int logonTimes buyer.getLogontimes if logonTimes gt 0 session.putValuequotmemberIDquotmemberIDgt ltH2 align”center”gtlt buyer.getMemberName gt欢迎你第 lt logonTimes 1gt次来到 CUUG 网上书店lt/H2gt ltH2 align”center”gtltA href”booklist.
jsp”gt进入书店lt/Agtlt/H2gtlt elsegt ltH2 align”center”gt对不起lt memberID gt你的用户名和密码不一致lt/H2gt ltH2 align”center”gtltA href”default.htm”gt重新登录lt/Agtlt/H2gtlt gtlt/BODYgtlt/
HTMLgt登录正确时的结果如图 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 所示,为了便于说明,在本例中 price 也设置成了 String型,在实际应用中应该设置成货币或浮点型: 图 15-9 图书信息的表结构 其中,bookISBN 是主键,区分不同的图书。
Java Bean 要根据不同的图书的 bookISBN来获得其相应的书名、作者、出版社、价格、简介等信息。
同时 Java Bean 还要有列出书店中所有图书的信息的功能。
清单 15-4 BookBean..Java / BuyerBean.Java 1.10.2001 Copyright 2000 2001 by cuug llp. 本 Bean 中的各个方法的功能介绍如下: setBookISBN:设置图书的编号,同时根据编号更新相应的书名、作者、出版社、价 格和简介 getBookList— 取得书库中全部书的书名、出版社、价格、作者等信息; getBookISBN— 取得当前图书的编号 ; getBookName—取得当前图书的书名; getBookAuthor—取得当前图书的作者; getPublisher—取得当前图书的出版社信息; getPrice—取得当前图书的价格; getIntroduce()取得当前图书的简介信息。
main方法用于将 BEAN 作为一个 Application 进行测试时使用,正式发布时可以删除。
/package cuugimport Java.
sql.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 quotsun.jdbc.odbc.JdbcOdbcDriverquot private static String strDBUrl quotjdbc:odbc:bookstorequot private Connection conn null private ResultSet rs null public BookBean //加载驱动 try Class.forNamestrDBDriver catchJava.lang.ClassNotFoundException e System.err.printlnquotBookBean :quot e.getMessage //取当前书库中全部图书信息public ResultSet getBookList String strSql null try //建立与数据库的连接 conn DriverManager.getConnectionstrDBUrl Statement stmt conn.createStatement strSql quotSelect bookISBNbookNamebookAuthorpublisherprice from bookInfo quot rs stmt.executeQuerystrSql //捕获异常 catchSQLException e System.err.printlnquotBookBean.getBookList:quot e.getMessage return rs //根据图书的编号给图书的其他信息赋值private void getBookInfoString ISBN String strSql null bookName null bookAuthor null publisher null introduce null price null try //建立和数据库的连接 conn DriverManager.getConnectionstrDBUrl Statement stmt conn.createStatement strSql quotSelect from bookInfo where bookISBN quot ISBN quotquot rs stmt.executeQuerystrSql while rs.next bookName rs.getStringquotbookNamequot bookAuthor rs.getStringquotbookAuthorquot publisher rs.getStringquotpublisherquot introduce rs.getStringquotintroducequot price rs.getStringquotpricequot //捕获异常 catchSQLException e System.err.printlnquotBookBean.getBookList:quot e.getMessage //给图书的编号赋值,同时调用函数给图书的其他信息赋值public void setBookISBN String ISBN this.bookISBN ISBN getBookInfobookISBN//取图书编号public String getBookISBN return bookISBN //取书名public String getBookName return bookName //取作者信息public String getBookAuthor return bookAuthor//取出版社信息public String getPublisher return publisher//取图书简介public String getIntroduce return introduce //取图书价格public String getPrice return price//将Bean作为一个application进行测试用public static void mainString args BookBean book new BookBean book.setBookISBNquot7-5053-5316-4quot System.out.printlnbook.getBookName System.out.printlnbook.getBookAuthor System.out.printlnbook.getPublisher System.out.printlnbook.getIntroduce System.out.printlnbook.getPrice try ResultSet tmpRS book.getBookList while tmpRS.next System.out.printlntmpRS.getStringquotbooknamequot tmpRS.close //捕获异常 catchException e System.err.printlnquotmainquot e.getMessage 15.2.2 选书
JSP 会员正确登录之后,即可进入书店进行选书,我们已经在 checklogon.
jsp 中将会员的代码(memberID)放入系统的 session 中,为了保证用户只能从主页面登录进入书店,我们在给会员显示可供选择的图书之前,先检查 session 中是否有 memberID 的合法值,如果没有则提示用户先去登录。
清单 15-5 booklist.
jsp ltDOCTYPE HTML PUBLIC quot-//W3C//DTD HTML 4.0 Transitional//ENquotgt lt page languagequotJavaquot importquotJava.sql.quot contentTypequottext/htmlcharset gb2312quotgt ltjsp:useBean classquotcuug.BookBeanquot idquotbookquot scopequotpagequotgtlt/
jsp:useBeangt ltHTMLgt ltHEADgt ltMETA http-equivquotContent-Style-Typequot contentquottext/cssquotgt ltTITLEgt CUUG Book Store On Line -member:lt session.getValuequotmemberIDquot gt lt/TITLEgt ltSCRIPT languagequotJavaScriptquotgt lt-- function openwinstr window.openquotaddcart.jspisbnquotstr quotshoppingcartquotquotwidth300height200resizable1scrollbars2quot return//--gtlt/SCRIPTgtlt/HEADgtltBODY BGCOLORquotFFFFFFquotgtltH1 alignquotcenterquotgtCUUG 网上书店lt/H1gtltif session.getValuequotmemberIDquot nullquotquot.equalssession.getValuequotmemberIDquotgt ltH2 alignquotcenterquotgt请先登录然后再选书lt/H2gt ltH2 alignquotcenterquotgtltA hrefquotdefault.htmquotgt登录lt/Agtlt/H2gtltelsegtlttable widthquot100quot borderquot1quot cellspacingquot0quot bordercolorquot9999FFquotgt lttrgt lttdgtltfont colorquot3333FFquotgt书名lt/fontgtlt/tdgt lttdgtltfont colorquot3333FFquotgt作者lt/fontgtlt/tdgt lttdgtltfont colorquot3333FFquotgt出版社lt/fontgtlt/tdgt lttdgtltfont colorquot3333FFquotgt定价lt/fontgtlt/tdgt lttdgtampnbsplt/tdgt lt/trgtlt ResultSet rs book.getBookList whilers.next String ISBN rs.getStringquotbookISBNquotgt lttrgt lttdgtlta hrefquotbookinfo.jspisbn lt ISBNgtquotgtlt rs.getStringquotbookNamequotgtlt/Agtlt/tdgt lttdgtlt rs.getStringquotbookAuthorquotgtlt/tdgt lttdgtlt rs.getStringquotpublisherquotgtlt/tdgt lttdgtlt rs.getStringquotpricequotgtlt/tdgt lttdgtlta hrefJavascript:openwinquotlt ISBN gtquotgt加入购物车lt/agtlt/tdgt lt/trgt lt gt lt/tablegt lttable alignquotcenterquot borderquot0quotgt lttbodygt lttrgt lttdgtlta hrefquotshoppingcart.jspquotgtltfont colorquot0000FFquotgt 查 看 购 物 车lt/fontgtlt/agtlt/tdgt lttdgtlt/tdgt lt/trgt lt/tbodygt lt/tablegt ltpgtampnbsplt/pgt lt gt lt/BODYgt lt/HTMLgt 已经登录过的会员和没有登录过的会员进入该页面是的结构分别如图 15-10 和图 15-11所示:正确登录的会员的会员代码在浏览器的标题栏显示为:member:“会员代码” 。
图 15-10 会员 abcd 正确登录 图 15-11 会员未登录直接来选书 在本例中利用 JavaScript 语句定义了一个函数来将所调用另外的一个
jsp 来处理把书加入购物车的操作: ltSCRIPT languagequotJavaScriptquotgt lt-- function openwinstr window.openquotaddcart.jspisbnquotstr quotshoppingcartquotquotwidth300height200resizable1scrollbars2quot return //--gt lt/SCRIPTgt 该函数用于打开 addcart.
jsp 并切将图书编号作为参数传给 addcart.
jsp。
addcart.
jsp 利.