您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 15 JSP 开发实例――网上书店
115JSP开发实例——网上书店电子商务(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_typescard_types表(见表15-1)主要包含允许用户用的银行信用卡信息,管理员可以添加或删除信用卡。215.2.2categoriescategories表(见表15-2)包含书的类别,管理员可以添加书籍的类别。15.2.5items表items表(见表15-5)用来保存书籍信息。315.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)4packagefunction;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;xrow;x++)rs.next();}5/***查询数据库,并返回一个结果集*/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);6}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;jcount;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;iFaFields.length;iF++){rsHash.put(aFields[iF],getValue(rs,aFields[iF]));}returnrsHash;}/***建立数据库连接**返回一个Connection*/publicjava.sql.Connectioncn()throwsjava.sql.SQLException{returnjava.sql.DriverManager.getConnection(strConn,DBusername,DBpassword);7}/***将字符串进行编码*/publicStringtoURL(StringstrValue){if(strValue==null)return;if(strValue.compareTo()==0)return;returnjava.net.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,Strings
本文标题:15 JSP 开发实例――网上书店
链接地址:https://www.777doc.com/doc-4966343 .html