JSP 开发实例网上书店.docx

上传人:b****9 文档编号:23404921 上传时间:2023-05-16 格式:DOCX 页数:57 大小:1.09MB
下载 相关 举报
JSP 开发实例网上书店.docx_第1页
第1页 / 共57页
JSP 开发实例网上书店.docx_第2页
第2页 / 共57页
JSP 开发实例网上书店.docx_第3页
第3页 / 共57页
JSP 开发实例网上书店.docx_第4页
第4页 / 共57页
JSP 开发实例网上书店.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

JSP 开发实例网上书店.docx

《JSP 开发实例网上书店.docx》由会员分享,可在线阅读,更多相关《JSP 开发实例网上书店.docx(57页珍藏版)》请在冰豆网上搜索。

JSP 开发实例网上书店.docx

JSP开发实例网上书店

15JSP开发实例——网上书店

电子商务(ElectronicCommerce)简称为EC,它包含两个方面的内容:

子方式和商贸活动。

电子商务指的是利用简单、快捷、低成本的子通信方式,买卖双方不见面地进行各种商贸活动。

现在人们所研究的子商务主要是以EDI(电子数据转换)和Internet来完成的。

电子商务可以分为两个层次:

较低层次的电子商务如子商情、电子贸易和子合同等;较高级的是利用Internet进行全部的贸易活动。

同现实世界的商务活动类似,高级的子商务也涉及很多方面,除了买家、卖家外,要有银行或金融机构、政府机构、认证机构等的加入才行。

但是,由于参与子商务的各方在物理上是互不谋面的,整个电子商务过程并不是现实世界商务活动的翻版,它需要网上银行、在线电子支付等条件和数据加密、电子签名等技术。

随着电子商务的发展,出现不少网上书店,它们正逐步改变着书籍交易的方式。

本书前面介绍了Eclipse与Tomcat集成开发Web应用程序的方法,本章将以一个网上书店的例子介绍如何在Eclipse下基于JSP开发Web应用程序。

15.1项目需求分析

需求分析是成功实施网上书店系统的基础,只有弄清楚用户的需求,才能真正开发出满足用户需求的系统,也才能够真正让整个系统发挥其相应的作用。

接下来对该系统的总体需求做一个分析,读者在实际开发过程中,可以对本系统的需求继续完善。

由于网上书店系统对权限和保密性的要求比较高,所以很重要的一项就是进行用户管理和设置权限。

(1)用户登录。

进入系统前,用户需要输入正确的用户名和密码。

输入的信息与数据库中的数据进行比较后,系统判断用户能否进入并获得相应的权限。

(2)修改用户信息。

用户登录系统后,可以修改自己的注册信息,包括用户名、密码、Email、地址和话等。

(3)管理员用户。

管理员是一个特殊的用户,它可以对普通用户、订单、书籍分类等进行管理。

(4)购买书籍。

用户首先正确登录,然后浏览书店,找到需要的书籍,并将其放入购物篮。

(5)查询购物篮。

用户可以查询自己的购物篮以便了解购买了哪些书,并且可以对购买数目进行更改。

(6)浏览书籍概要。

点击网页上的书籍就可以浏览书籍概要。

(7)用户注册。

用户可以注册一个新的账号,注册新账号需要输入姓名、用户名、密码和银行卡号等信息。

(8)用户退出。

用户完成购物后,能够退出该系统。

15.2建立数据库

有很多种的数据库可供选择,这里以Access数据库为例。

虽然这个数据库不像Oracle、DB2那么强大,但是它的功能已经能够满足项目的要求。

下面介绍本例中涉及的几个表。

15.2.1card_types

card_types表(见表15-1)主要包含允许用户用的银行信用卡信息,管理员可以添加或删除信用卡。

15.2.2categories

categories表(见表15-2)包含书的类别,管理员可以添加书籍的类别。

15.2.5items表

items表(见表15-5)用来保存书籍信息。

15.2.6members表

 

15.3项目开发流程

下面将介绍开发该JSP项目具体步骤。

首先新建一个Tomcat项目,取名为BookStore。

15.3.1创建功能类

由于这个项目要用到数据库,需要建立与数据库的连接,进而执行查询、插入等操作。

可以把这些操作集成到一个单独的类中,这样做可以将功能与显示分开;也可以采用JSP技术,将所有的函数放在同一个JSP页上,然后在每个需要用此函数的页面中包含这个页。

本例采用了前面的方法,将方法放在Common类中。

新建一个包(包名为function),然后在其中新建Common类,输入实例15-1的代码。

代码中包含对每个方法的注释。

在该项目的源代码中,有一个Common.jsp文件,它是这个类的JSP实现。

【实例15-1】Common类(Common.java)

packagefunction;

publicclassCommon{

publicCommon(){

super();

}

publicstaticfinalStringCRLF="\r\n";

publicstaticfinalintUNDEFINT=Integer.MIN_VALUE;

publicstaticfinalintadText=1;

publicstaticfinalintadDate=2;

publicstaticfinalintadNumber=3;

staticfinalintadSearch_=4;

staticfinalintad_Search_=5;

staticfinalStringappPath="/";

//以下字符串用于数据库的连接

//DBDriver是指定数据库连接的驱动,这里用的是Access数据库的驱动

//strConn指定与哪个数据库的连接。

这里将BookStore_MSAccess.mdb放在C盘下//读者可以根据需要放在不同的目录,只需要改变DBQ的值即可

//DBusername和DBpassword分别是连接数据库的用户名和密码

staticfinalStringDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";

staticfinalStringstrConn="jdbc:

odbc:

driver={MicrosoftAccessDriver

(*.mdb)};DBQ=C:

/BookStore_MSAccess.mdb";

staticfinalStringDBusername="";

staticfinalStringDBpassword="";

/**

*注册驱动器以便建立数据库的连接;在获得数据库连接之前一定要调用的函数*

*/

publicstaticStringloadDriver(){

StringsErr="";

try{

java.sql.DriverManager.registerDriver((java.sql.Driver)(Class

.forName(DBDriver).newInstance()));

}catch(Exceptione){

sErr=e.toString();

}

return(sErr);

}

/**

*遍历产生的结果集

*/

publicstaticvoidabsolute(java.sql.ResultSetrs,introw)

throwsjava.sql.SQLException{

for(intx=1;x

rs.next();

}

/**

*查询数据库,并返回一个结果集

*/

publicjava.sql.ResultSetopenrs(java.sql.Statementstat,Stringsql)throwsjava.sql.SQLException{

java.sql.ResultSetrs=stat.executeQuery(sql);

return(rs);

}

/**

*查询表中的某个特定字段

*/

publicStringdLookUp(java.sql.Statementstat,Stringtable,StringfName,Stringwhere){

java.sql.Connectionconn1=null;

java.sql.Statementstat1=null;

try{

conn1=cn();

stat1=conn1.createStatement();

java.sql.ResultSetrsLookUp=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.Statementstat,Stringtable,StringsWhere){longlNumRecs=0;

try{

java.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.HttpServletResponseresponse,Exceptione){

returne.toString();

}

/**

*获得表中每个字段的名字

*/

publicString[]getFieldsName(java.sql.ResultSetrs)

throwsjava.sql.SQLException{

java.sql.ResultSetMetaDatametaData=rs.getMetaData();

intcount=metaData.getColumnCount();

String[]aFields=newString[count];

for(intj=0;j

aFields[j]=metaData.getColumnLabel(j+1);

}

returnaFields;

}

/**

*把查询结果放入Hashtable

*/

publicjava.util.HashtablegetRecordToHash(java.sql.ResultSetrs,java.util.HashtablersHash,String[]aFields)

throwsjava.sql.SQLException{

for(intiF=0;iF

rsHash.put(aFields[iF],getValue(rs,aFields[iF]));

}

returnrsHash;

}

/**

*建立数据库连接

*

*返回一个Connection

*/

publicjava.sql.Connectioncn()throwsjava.sql.SQLException{

returnjava.sql.DriverManager.getConnection(strConn,DBusername,DBpassword);

}

/**

*将字符串进行编码

*/

publicStringtoURL(StringstrValue){

if(strValue==null)

return"";

if(strVpareTo("")==0)

return"";

.URLEncoder.encode(strValue);

}

/**

*将字符串转换成能在网页上显示的形式

*/

publicStringtoHTML(Stringvalue){

if(value==null)

return"";

value=replace(value,"&","&");

value=replace(value,"<","<");

value=replace(value,">",">");

value=replace(value,"\"","&"+"quot;");

returnvalue;

}

publicStringgetValueHTML(java.sql.ResultSetrs,StringfieldName){try{

Stringvalue=rs.getString(fieldName);

if(value!

=null){

returntoHTML(value);

}

}catch(java.sql.SQLExceptionsqle){

}

return"";

}

publicStringgetValue(java.sql.ResultSetrs,StringstrFieldName){if((rs==null)||(isEmpty(strFieldName))

||("".equals(strFieldName)))

return"";

try{

StringsValue=rs.getString(strFieldName);

if(sValue==null)

sValue="";

returnsValue;

}catch(Exceptione){

return"";

}

}

/**

*得到网页上某个参数的值

*/

publicStringgetParam(javax.servlet.http.HttpServletRequestreq,StringparamName){

Stringparam=req.getParameter(paramName);

if(param==null||param.equals(""))

return"";

param=replace(param,"&","&");

param=replace(param,"<","<");

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{

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,StringuncheckVal,intctype){

if(val==null||val.equals(""))

returntoSQL(uncheckVal,ctype);

else

returntoSQL(checkVal,ctype);

}

/**

*创建SQL语句中的判断部分

*/

publicStringtoWhereSQL(StringfieldName,StringfieldVal,inttype){

Stringres="";

switch(type){

caseadText:

if(!

"".equals(fieldVal)){

res=""+fieldName+"like'%"+fieldVal+"%'";

}

caseadNumber:

res=""+fieldName+"="+fieldVal+"";

caseadDate:

res=""+fieldName+"='"+fieldVal+"'";

default:

res=""+fieldName+"='"+fieldVal+"'";

}

returnres;

}

publicStringtoSQL(Stringvalue,inttype){

if(value==null)

return"Null";

Stringparam=value;

if("".equals(param)&&(type==adText||type==adDate)){return"Null";

}

switch(type){

caseadText:

{

param=replace(param,"'","''");

param=replace(param,"&","&");

param="'"+param+"'";

break;

}

caseadSearch_:

casead_Search_:

{

param=replace(param,"'","''");

break;

}

caseadNumber:

{

try{

if(!

isNumber(value)||"".equals(param))

param="null";

else

param=value;

}catch(NumberFormatExceptionnfe){

param="null";

}

break;

}

caseadDate:

{

param="'"+param+"'";

break;

}

}

returnparam;

}

/**

*进行字符串替换

*/

privateStringreplace(Stringstr,Stringpattern,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(java.sql.Connectionconn,Stringsql,booleanisSearch,booleanisRequired,StringselectedValue){StringsOptions="";

StringsSel="";

if(isSearch){

sOptions+="All";

}else{

if(!

isRequired){

sOptions+="";

}

}

try{

java.sql.Statementstat=conn.createStatement();

java.sql.ResultSetrs=null;

rs=openrs(stat,sql);

while(rs.next()){

Stringid=toHTML(rs.getString

(1));

Stringval=toHTML(rs.getString

(2));

if(pareTo(selectedValue)==0){

sSel="SELECTED";

}else{

sSel="";

}

sOptions+=""+val

+"";

}

rs.close();

stat.close();

}catch(Exceptione){

}

returnsOptions;

}

publicStringgetOptionsLOV(StringsLOV,booleanisSearch,booleanisRequired,StringselectedValue){

StringsSel="";

StringslOptions="";

StringsOptions="";

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();

}else{

if(old.equals(";")&&(id.equals(";"))){

id="";

}

}

if(!

id.equals("")){

old=id;

}

i++;

if(LOV.hasMoreTokens()){

val=LOV.nextToken();

if(!

old.equals(";")&&(val.equals(";"))){

val=LOV.nextToken();

}else{

if(old.equals(";")&&(val.equals(";"))){

val="";

}

}

if(val.equals(";")){

val="";

}

if(!

val.equals("")){

old=val;

}

i++;

}

if(pareTo(selectedValue)==0){

sSel="SELECTED";

}else{

sSel="";

}

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();

}else{

if(o

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

当前位置:首页 > 高中教育 > 高考

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

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