ImageVerifierCode 换一换
格式:DOCX , 页数:57 ,大小:1.09MB ,
资源ID:23404921      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23404921.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JSP 开发实例网上书店.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JSP 开发实例网上书店.docx

1、JSP 开发实例网上书店15 JSP开发实例网上书店电子商务(ElectronicCommerce)简称为EC,它包含两个方面的内容:子方式和商贸活动。电子商务指的是利用简单、快捷、低成本的子通信方式,买卖双方不见面地进行各种商贸活动。现在人们所研究的子商务主要是以EDI(电子数据转换)和Internet来完成的。电子商务可以分为两个层次:较低层次的电子商务如子商情、电子贸易和子合同等;较高级的是利用Internet进行全部的贸易活动。同现实世界的商务活动类似,高级的子商务也涉及很多方面,除了买家、卖家外,要有银行或金融机构、政府机构、认证机构等的加入才行。但是,由于参与子商务的各方在物理上是

2、互不谋面的,整个电子商务过程并不是现实世界商务活动的翻版,它需要网上银行、在线电子支付等条件和数据加密、电子签名等技术。随着电子商务的发展,出现不少网上书店,它们正逐步改变着书籍交易的方式。本书前面介绍了Eclipse与Tomcat集成开发Web应用程序的方法,本章将以一个网上书店的例子介绍如何在Eclipse下基于JSP开发Web应用程序。15.1项目需求分析需求分析是成功实施网上书店系统的基础,只有弄清楚用户的需求,才能真正开发出满足用户需求的系统,也才能够真正让整个系统发挥其相应的作用。接下来对该系统的总体需求做一个分析,读者在实际开发过程中,可以对本系统的需求继续完善。由于网上书店系统

3、对权限和保密性的要求比较高,所以很重要的一项就是进行用户管理和设置权限。(1)用户登录。进入系统前,用户需要输入正确的用户名和密码。输入的信息与数据库中的数据进行比较后,系统判断用户能否进入并获得相应的权限。(2)修改用户信息。用户登录系统后,可以修改自己的注册信息,包括用户名、密码、Email、地址和话等。(3)管理员用户。管理员是一个特殊的用户,它可以对普通用户、订单、书籍分类等进行管理。(4)购买书籍。用户首先正确登录,然后浏览书店,找到需要的书籍,并将其放入购物篮。(5)查询购物篮。用户可以查询自己的购物篮以便了解购买了哪些书,并且可以对购买数目进行更改。(6)浏览书籍概要。点击网页上

4、的书籍就可以浏览书籍概要。(7)用户注册。用户可以注册一个新的账号,注册新账号需要输入姓名、用户名、密码和银行卡号等信息。(8)用户退出。用户完成购物后,能够退出该系统。15.2建立数据库有很多种的数据库可供选择,这里以Access数据库为例。虽然这个数据库不像Oracle、 DB2那么强大,但是它的功能已经能够满足项目的要求。下面介绍本例中涉及的几个表。15.2.1card_typescard_types表(见表15-1)主要包含允许用户用的银行信用卡信息,管理员可以添加或删除信用卡。15.2.2categoriescategories表(见表15-2)包含书的类别,管理员可以添加书籍的类别

5、。15.2.5 items表items表(见表15-5)用来保存书籍信息。15.2.6 members表15.3项目开发流程下面将介绍开发该JSP项目具体步骤。首先新建一个Tomcat项目,取名为BookStore。15.3.1创建功能类由于这个项目要用到数据库,需要建立与数据库的连接,进而执行查询、插入等操作。可以把这些操作集成到一个单独的类中,这样做可以将功能与显示分开;也可以采用JSP技术,将所有的函数放在同一个JSP页上,然后在每个需要用此函数的页面中包含这个页。本例采用了前面的方法,将方法放在Common类中。新建一个包(包名为function),然后在其中新建Common类,输入实

6、例15-1的代码。代码中包含对每个方法的注释。在该项目的源代码中,有一个Common.jsp文件,它是这个类的JSP实现。【实例15-1】Common类(Common.java)packagefunction;publicclassCommonpublicCommon()super();publicstaticfinalStringCRLF=rn;publicstaticfinalintUNDEFINT=Integer.MIN_VALUE;publicstaticfinalintadText=1;publicstaticfinalintadDate=2;publicstaticfinalint

7、adNumber=3;staticfinalintadSearch_=4;staticfinalintad_Search_=5;staticfinalStringappPath=/;/以下字符串用于数据库的连接/DBDriver是指定数据库连接的驱动,这里用的是Access数据库的驱动/strConn指定与哪个数据库的连接。这里将BookStore_MSAccess.mdb放在C盘下 /读者可以根据需要放在不同的目录,只需要改变DBQ的值即可/DBusername和DBpassword分别是连接数据库的用户名和密码staticfinalStringDBDriver=sun.jdbc.odbc.

8、JdbcOdbcDriver;staticfinalStringstrConn=jdbc:odbc:driver=MicrosoftAccessDriver(*.mdb);DBQ=C:/BookStore_MSAccess.mdb;staticfinalStringDBusername=;staticfinalStringDBpassword=;/*注册驱动器以便建立数据库的连接;在获得数据库连接之前一定要调用的函数 */publicstaticStringloadDriver()StringsErr=;tryjava.sql.DriverManager.registerDriver(java

9、.sql.Driver)(Class.forName(DBDriver).newInstance();catch(Exceptione)sErr=e.toString();return(sErr);/*遍历产生的结果集*/publicstaticvoidabsolute(java.sql.ResultSetrs,introw)throwsjava.sql.SQLExceptionfor(intx=1;xrow;x+)rs.next();/*查询数据库,并返回一个结果集*/publicjava.sql.ResultSetopenrs(java.sql.Statementstat,Stringsq

10、l) throwsjava.sql.SQLExceptionjava.sql.ResultSetrs=stat.executeQuery(sql);return(rs);/*查询表中的某个特定字段*/publicStringdLookUp(java.sql.Statementstat,Stringtable,StringfName, Stringwhere)java.sql.Connectionconn1=null;java.sql.Statementstat1=null;tryconn1=cn();stat1=conn1.createStatement();java.sql.ResultSe

11、trsLookUp=openrs(stat1,SELECT+fName+FROM+table+WHERE+where);if(!rsLookUp.next()rsLookUp.close();stat1.close();conn1.close();return;Stringres=rsLookUp.getString(1);rsLookUp.close();stat1.close();conn1.close();return(res=null?:res);catch(Exceptione)return;/*查询表中符合条件的结果的个数*/publiclongdCountRec(java.sql

12、.Statementstat,Stringtable,StringsWhere) longlNumRecs=0;tryjava.sql.ResultSetrs=stat.executeQuery(selectcount(*)from+table+where+sWhere);if(rs!=null&rs.next()lNumRecs=rs.getLong(1);rs.close();catch(Exceptione);returnlNumRecs;/*处理错误,将错误转换成String类型返回*/publicStringproceedError(javax.servlet.http.HttpSe

13、rvletResponseresponse, Exceptione)returne.toString();/*获得表中每个字段的名字*/publicStringgetFieldsName(java.sql.ResultSetrs)throwsjava.sql.SQLExceptionjava.sql.ResultSetMetaDatametaData=rs.getMetaData();intcount=metaData.getColumnCount();StringaFields=newStringcount;for(intj=0;jcount;j+)aFieldsj=metaData.get

14、ColumnLabel(j+1);returnaFields;/*把查询结果放入Hashtable*/publicjava.util.HashtablegetRecordToHash(java.sql.ResultSetrs, java.util.HashtablersHash,StringaFields)throwsjava.sql.SQLExceptionfor(intiF=0;iFaFields.length;iF+)rsHash.put(aFieldsiF,getValue(rs,aFieldsiF);returnrsHash;/*建立数据库连接*返回一个Connection*/pub

15、licjava.sql.Connectioncn()throwsjava.sql.SQLExceptionreturnjava.sql.DriverManager.getConnection(strConn,DBusername, DBpassword);/*将字符串进行编码*/publicStringtoURL(StringstrValue)if(strValue=null)return;if(strVpareTo()=0)return;.URLEncoder.encode(strValue);/*将字符串转换成能在网页上显示的形式*/publicStringtoHTML(Stringval

16、ue)if(value=null)return;value=replace(value,&,&);value=replace(value,);value=replace(value,&+quot;);returnvalue;publicStringgetValueHTML(java.sql.ResultSetrs,StringfieldName) tryStringvalue=rs.getString(fieldName);if(value!=null)returntoHTML(value);catch(java.sql.SQLExceptionsqle)return;publicString

17、getValue(java.sql.ResultSetrs,StringstrFieldName) if(rs=null)|(isEmpty(strFieldName)|(.equals(strFieldName)return;tryStringsValue=rs.getString(strFieldName);if(sValue=null)sValue=;returnsValue;catch(Exceptione)return;/*得到网页上某个参数的值*/publicStringgetParam(javax.servlet.http.HttpServletRequestreq, Strin

18、gparamName)Stringparam=req.getParameter(paramName);if(param=null|param.equals()return;param=replace(param,&,&);param=replace(param,);param=replace(param,<,);returnparam;publicbooleanisNumber(Stringparam)booleanresult;if(param=null|param.equals()returntrue;param=param.replace(d,_).replace(f,_);try

19、Doubledbl=newDouble(param);result=true;catch(NumberFormatExceptionnfe)result=false;returnresult;publicbooleanisEmpty(intval)returnval=UNDEFINT;publicbooleanisEmpty(Stringval)return(val=null|val.equals()|val.equals(Integer.toString(UNDEFINT);publicStringgetCheckBoxValue(Stringval,StringcheckVal, Stri

20、nguncheckVal,intctype)if(val=null|val.equals()returntoSQL(uncheckVal,ctype);elsereturntoSQL(checkVal,ctype);/*创建SQL语句中的判断部分*/publicStringtoWhereSQL(StringfieldName,StringfieldVal,inttype)Stringres=;switch(type)caseadText:if(!.equals(fieldVal)res=+fieldName+like%+fieldVal+%;caseadNumber:res=+fieldNam

21、e+=+fieldVal+;caseadDate:res=+fieldName+=+fieldVal+;default:res=+fieldName+=+fieldVal+;returnres;publicStringtoSQL(Stringvalue,inttype)if(value=null)returnNull;Stringparam=value;if(.equals(param)&(type=adText|type=adDate) returnNull;switch(type)caseadText:param=replace(param,);param=replace(param,&,

22、&);param=+param+;break;caseadSearch_:casead_Search_:param=replace(param,);break;caseadNumber:tryif(!isNumber(value)|.equals(param)param=null;elseparam=value;catch(NumberFormatExceptionnfe)param=null;break;caseadDate:param=+param+;break;returnparam;/*进行字符串替换*/privateStringreplace(Stringstr,Stringpatt

23、ern,Stringreplace) if(replace=null)replace=;ints=0,e=0;StringBufferresult=newStringBuffer(int)str.length()*2); while(e=str.indexOf(pattern,s)=0)result.append(str.substring(s,e);result.append(replace);s=e+pattern.length();result.append(str.substring(s);returnresult.toString();publicStringgetOptions(j

24、ava.sql.Connectionconn,Stringsql, booleanisSearch,booleanisRequired,StringselectedValue) StringsOptions=;StringsSel=;if(isSearch)sOptions+=All;elseif(!isRequired)sOptions+=;tryjava.sql.Statementstat=conn.createStatement();java.sql.ResultSetrs=null;rs=openrs(stat,sql);while(rs.next()Stringid=toHTML(r

25、s.getString(1);Stringval=toHTML(rs.getString(2);if(pareTo(selectedValue)=0)sSel=SELECTED;elsesSel=;sOptions+=+val+;rs.close();stat.close();catch(Exceptione)returnsOptions;publicStringgetOptionsLOV(StringsLOV,booleanisSearch, booleanisRequired,StringselectedValue)StringsSel=;StringslOptions=;StringsO

26、ptions=;Stringid=;Stringval=;java.util.StringTokenizerLOV=newjava.util.StringTokenizer(sLOV, ;,true);inti=0;Stringold=;while(LOV.hasMoreTokens()id=LOV.nextToken();if(!old.equals(;)&(id.equals(;)id=LOV.nextToken();elseif(old.equals(;)&(id.equals(;)id=;if(!id.equals()old=id;i+;if(LOV.hasMoreTokens()va

27、l=LOV.nextToken();if(!old.equals(;)&(val.equals(;)val=LOV.nextToken();elseif(old.equals(;)&(val.equals(;)val=;if(val.equals(;)val=;if(!val.equals()old=val;i+;if(pareTo(selectedValue)=0)sSel=SELECTED;elsesSel=;slOptions+=+val+;if(i%2)=0)sOptions+=slOptions;returnsOptions;publicStringgetValFromLOV(StringselectedValue,StringsLOV) StringsRes=;Stringid=;Stringval=;java.util.StringTokenizerLOV=newjava.util.StringTokenizer(sLOV, ;,true);inti=0;Stringold=;while(LOV.hasMoreTokens()id=LOV.nextToken();if(!old.equals(;)&(id.equals(;)id=LOV.nextToken();elseif(o

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1