实验二 网上书店Word文档下载推荐.docx
- 文档编号:18052287
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:42
- 大小:351.65KB
实验二 网上书店Word文档下载推荐.docx
《实验二 网上书店Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验二 网上书店Word文档下载推荐.docx(42页珍藏版)》请在冰豆网上搜索。
(3)在图1中“系统DSN”选项下单击“添加”按钮,来添加一个系统的数据源(DSN),则出现如图2所示数据源驱动程序选择界面:
图2数据源驱动程序选择界面
(4)在图2中选择“MicrosoftAccessDriver(*.mdb)”单击“完成”加载Access数据库的驱动,则出现如图3所示数据库ODBC安装界面:
图3数据库ODBC安装界面
(5)在图3中单击“选择(S)…”按钮,启动一个类似资源管理器的界面来选择数据库,如图4所示,在图4所示的界面中选择bookstore.mdb。
图4数据库选择界面
3.1会员登录
做一个网上书店,在顾客开始购书之前,必须要记录用户的一些信息以便用户在不同的分类、不同的页面购书时,最后能够去收款台统一结帐,而且网上书店同时有许多人在选购图书,也要求对不同的顾客进行区分,我们可以要求顾客在购书之前进行注册成为会员,以后只用会员代码和密码即可登录。
为了便于说明现在的电子商务网站,由JSP做页面表现,由JavaBean做应用逻辑的结构,在本例中将会员登录程序分成两大部分:
一、JavaBean用于对数据库的操作,验证用户名和密码是否正确;
二、JSP页面部分,用于供用户会员代码和密码以及显示验证结果。
1)会员登录JavaBean
我们网上书店中的会员信息的库结构如图5所示:
图5会员信息库
其中memberID是主键,用于区分不同的会员,新会员注册时只能使用没有被使用的用户代码。
在验证时我们只要使用验证用户的memberID和其pwd是否一致即可判断该用户是否合法,如果合法则其登录次数加1。
下面是用户验证部分的JavaBean的代码
清单1BuyerBean.Java
/**BuyerBean.Java1.10.2001
*Copyright©
2000,2001bycuugllp.
*本Bean中有两个set方法和两个get方法:
*setMemberID()—对BuyerBean中的memberID属性进行赋值;
*setPwd()—对BuyerBean中的pwd属性进行赋值;
*getLogontimes()—取该会员登录的次数
*getMenberName()获得该会员的真实姓名,用于显示欢迎信息。
*main()方法用于将BEAN作为一个Application进行测试时使用,正式发布时可以删除。
**/
packagecuug;
importJava.sql.*;
publicclassBuyerBean{
privateStringmemberID=null;
//会员ID
privateStringmemberName=null;
//会员姓名
privateStringpwd=null;
//密码
privateintlogontimes=-1;
//登录的次数
privatestaticStringstrDBDriver=“sun.jdbc.odbc.JdbcOdbcDriver”;
//JDBC驱动
privatestaticStringstrDBUrl=“jdbc:
odbc:
bookstore”;
//数据源,
privateConnectionconn=null;
//连接
privateResultSetrs=null;
//结果集
publicBuyerBean(){
//加载JDBC-ODBC驱动
try{
Class.forName(strDBDriver);
}
//捕获异常
catch(Java.lang.ClassNotFoundExceptione){
System.err.println(“BuyerBean():
”+e.getMessage());
}
}
//获得登录次数,登录的会员的名字也在该方法调用时获得
publicintgetLogontimes(){
StringstrSql=null;
try{
conn=DriverManager.getConnection(strDBUrl);
Statementstmt=conn.createStatement();
strSql=“SelectlogonTimes,membernamefrombuyerInfowherememberID=‘”+
memberID+“’andpwd=’”+pwd+“’”;
rs=stmt.executeQuery(strSql);
while(rs.next()){
//登录的次数
logontimes=rs.getInt(“logonTimes”);
//会员姓名
memberName=rs.getString(“membername”);
}
rs.close();
//如果是合法会员则将其登录次数加1
if(logontimes!
=-1){
strSql=“UpdatebuyerInfoset
logonTimes=logonTimes+1wherememberID=‘”+memberID+“’”;
stmt.executeUpdate(strSql);
}
stmt.close();
conn.close();
catch(SQLExceptione){
System.err.println(“BuyerBean.getLogontimes():
returnlogontimes;
//设置memberID属性;
publicvoidsetMemberID(StringID){
this.memberID=ID;
//设置pwd属性
publicvoidsetPwd(Stringpassword){
this.pwd=password;
//获得该会员的真实姓名,必须在取该会员登录的次数之后才能被赋予正确的值
publicStringgetMemberName(){
returnmemberName;
//测试Bean中的各个方法是否能够正常工作
publicstaticvoidmain(Stringargs[]){
BuyerBeanbuyer=newBuyerBean();
buyer.setMemberID(“abcd”);
buyer.setPwd(“1234”);
System.out.println(buyer.getLogontimes());
System.out.println(buyer.getMemberName());
}
}
在BuyerBean中用了packagecuug;
在发布到WEBSERVER时,可以用JAR(JDK中带的打包工具)把编译后的BuyerBean.class打包成JAR文件在服务器的环境变量classpath中给予指定,或者在服务器classpath环境变量指定的目录下建一个cuug文件夹,把BuyerBean.class放到cuug目录下。
2)会员登录htm与JSP
会员登录要由两个部分来完成,第一个页面用于会员输入其ID和密码,当然首页还可以加一些广告等的其它信息,在本例中略过。
清单2default.htm
<
contentType=”text/html;
charset=gb2312”>
HTML>
!
—
Copyright©
1999cuug,liu.
HEAD>
TITLE>
CUUGONLINEBOOKSTORE–MEMBERLOGIN<
/TITLE>
/HEAD>
BODYbgcolor=”white”>
H1align=”center”>
CUUG网上书店<
/H1>
H2align=”center”>
会员登录页<
/H2>
P>
&
nbsp;
/P>
CENTER>
FORMMETHOD=POSTACTION=”checklogon.jsp”>
BR>
fontsize=5color=”green”>
请输入会员代号和密码:
<
br>
会员代码:
inputTYPE=”text”name=memberID>
密&
码:
inputTYPE=”password”name=pwd>
INPUTTYPE=submitname=submitValue=”登录”>
/font>
/FORM>
/CENTER>
/BODY>
/HTML>
在本例中提供了一个文本框供用户输入会员代号和登录密码,其运行结果如图6所示,当会员输入其代码和密码后调用checklogon.jsp来验证该网络用户是否是合法会员。
图6会员登录页
在checklogon.jsp中接收从default.htm中由用户所填的会员代码和密码,把它传给BuyerBean,由BuyerBean判断该用户的会员代码和密码的正确性,若正确显示欢迎信息;
若不正确,则提供一个重新登录的链接。
Checklogon.jsp的源代码如下:
清单3checklogon.jsp
DOCTYPEHTMLPUBLIC“-//W3C//DTDHTML4.0Transitional//EN”>
%@pagelanguage=”Java”contentType=”text/html;
charset=GB2312”%>
jsp:
useBeanclass=”cuug.BuyerBean”id=”buyer”scope=”page”>
/jsp:
useBean>
METAname=”CHECKLOGON”>
CUUGONLINEBOOKSTORE–MEMBERLOGIN
BODYBGCOLOR=”#FFFFFF”>
%
StringmemberID=request.getParameter(“memberID”);
Stringpwd=request.getParameter(“pwd”);
buyer.setMemberID(memberID);
buyer.setPwd(pwd);
%>
%intlogonTimes=buyer.getLogontimes();
if(logonTimes>
0){
session.putValue("
memberID"
memberID);
<
%=buyer.getMemberName()%>
欢迎你第
%=logonTimes+1%>
次来到CUUG网上书店<
Ahref=”booklist.jsp”>
进入书店<
/A>
else{
对不起,<
%=memberID%>
你的用户名和密码不一致<
Ahref=”default.htm”>
重新登录<
登录正确时的结果如图7所示,错误时的结果如图8所示。
图7用户登录正确(会员abcd的真实姓名是cuug001)
图8用户登录错误
13.2选书
会员登录之后,合法的用户将可以看到本书店中可供选择的图书,并且将他感兴趣的书放入“购物车”,在去“收银台”结帐之前,该用户可以放弃购买其购物车中的任何一本书。
在此处我们用BookBean来获取图书的信息,在Booklist.jsp中显示这些书。
在会员选书部分,我们仍用JavaBean来操作数据库,用jsp来做页面表现。
1)选书JavaBean
图书信息的表结构如图9所示,为了便于说明,在本例中price也设置成了String型,在实际应用中应该设置成货币或浮点型:
图9图书信息的表结构
其中,bookISBN是主键,区分不同的图书。
JavaBean要根据不同的图书的bookISBN来获得其相应的书名、作者、出版社、价格、简介等信息。
同时JavaBean还要有列出书店中所有图书的信息的功能。
清单4BookBean..Java
2000,2001bycuug,llp.
*本Bean中的各个方法的功能介绍如下:
*setBookISBN():
设置图书的编号,同时根据编号更新相应的书名、作者、出版社、价格*和简介
*getBookList()—取得书库中全部书的书名、出版社、价格、作者等信息;
*getBookISBN()—取得当前图书的编号;
*getBookName()—取得当前图书的书名;
*getBookAuthor()—取得当前图书的作者;
*getPublisher()—取得当前图书的出版社信息;
*getPrice()—取得当前图书的价格;
*getIntroduce()取得当前图书的简介信息。
**/
publicclassBookBean{
privateStringbookISBN=null;
//图书编号
privateStringbookName=null;
//书名
privateStringbookAuthor=null;
//作者
privateStringpublisher=null;
//出版社
privateStringintroduce=null;
//简介
privateStringprice=null;
//价格
privatestaticStringstrDBDriver="
sun.jdbc.odbc.JdbcOdbcDriver"
;
privatestaticStringstrDBUrl="
jdbc:
bookstore"
publicBookBean(){
//加载驱动
System.err.println("
BookBean():
"
+e.getMessage());
//取当前书库中全部图书信息
publicResultSetgetBookList(){
//建立与数据库的连接
strSql="
SelectbookISBN,bookName,bookAuthor,publisher,pricefrombookInfo"
BookBean.getBookList():
returnrs;
//根据图书的编号给图书的其他信息赋值
privatevoidgetBookInfo(StringISBN){
bookName=null;
bookAuthor=null;
publisher=null;
introduce=null;
price=null;
//建立和数据库的连接
Select*frombookInfowherebookISBN='
+ISBN+"
'
while(rs.next()){
bookName=rs.getString("
bookName"
);
bookAuthor=rs.getString("
bookAuthor"
publisher=rs.getString("
publisher"
introduce=rs.getString("
introduce"
price=rs.getString("
price"
}
//给图书的编号赋值,同时调用函数给图书的其他信息赋值
publicvoidsetBookISBN(StringISBN){
this.bookISBN=ISBN;
getBookInfo(bookISBN);
//取图书编号
publicStringgetBookISBN(){
returnbookISBN;
//取书名
publicStringgetBookName(){
returnbookName;
//取作者信息
publicStringgetBookAuthor(){
returnbookAuthor;
//取出版社信息
publicStringgetPublisher(){
returnpublisher;
//取图书简介
publicStringgetIntroduce(){
returnintroduce;
//取图书价格
publicStringgetPrice(){
returnprice;
//将Bean作为一个application进行测试用
BookBeanbook=newBookBean();
book.setBookISBN("
7-5053-5316-4"
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());
ResultSettmpRS=book.getBookList();
while(tmpRS.next()){
System.out.println(tmpRS.getString("
bookname"
));
tmpRS.close();
catch(Exceptione){
main()"
2)选书JSP
会员正确登录之后,即可进入书店进行选书,我们已经在checklogon.jsp中将会员的代码(memberID)放入系统的sessi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 网上书店 实验 网上 书店