




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业论文-基于JSP网上书店销售系统毕业设计 目 录前 言2第一章概 述311 开发背景312 JSP简介4com JSP的运行原理4com JSP页面的组成6com JavaBean技术介绍6com JSP的运行环境713 系统开发环境7com 服务器的配置7com 数据库后台环境的配置11第二章 需求分析1421 系统说明1422 系统功能简介15com 基本功能15com 用户界面设计1523 系统运行环境15第三章 系统设计1731 系统设计思想1732 系统功能模块化1833 数据库设计18com 数据库需求分析19com 数据库概念结构19com 数据库逻辑机构设计20第四章 详细
2、设计2241 系统概述2242 系统主要文件2243 详细代码及说明23com户实体的Bean23com品实体的Bean26com 实现订购单实体的Bean27com 实现购物车实体的Bean29com 实现购物实体的Bean30com 前台运行程序cartjsp35第五章 总结41致谢42参考文献43前 言 随着Internet国际互联网的发展越来越多的企业开始建造自己的网站基于Internet的信息服务商务服务已经成为现代企业一项不可缺少的内容很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站现代企业需要的是一个功能强大的能提供完善的电子商务服务的动态商务网站JSP是Sun公司推
3、出的一种网站开发技术Sun公司借助自己在Java上的不凡造诣又把人们引进JSP时代JSP即Java Server Page它可以在Servlet和JavaBean的支持下完成功能强大的Web应用程序所以在我的毕业设计中我采用了JSP作为开发工具构建了一个能实现简单的电子商务的小型动态商务网站网上书店销售系统该系统能实现用户的注册登录功能能够实现商品的查询订购等功能该系统基本上具备一个网上商品销售系统应该具备的功能该设计项目基本上体现了构建一个动态商务网站所需要的技术可以说目前的大型商务网站也就是我们这个小型网站在内容上的扩充和重复通过这次的毕业设计我了解了目前流行的动态商务网站的构成和运作原理
4、掌握了用JSP构建动态网站的相关知识和技术原理锻炼了自己的动手实践能力更重要的是通过这次的毕业设计我培养出了刻苦钻研的学习精神和严肃认真的学习态度这对我以后的学习和工作有很大的益处概 述11 开发背景随着时代的发展信息技术InternetIntranet技术数据库技术的不断发展完善网络进程的加快传统的购物方式也越来越不能满足人们快节奏的生活需求使得企业的IT部门已经认识到Internet的优势电子商务就是在这样一个背景下产生发展起来的伴随着电子商务技术的不断成熟电子商务的功能也越来越强大注册用户可以在网上搜索购买到自己想要的各种商品初步让人们体会到了足不出户便可随意购物的快感我的毕业设计也就正
5、是一个电子商务系统的开发-网上商品销售系统12 JSP简介JSPJava Server Pages是由Sun Microsystems 公司倡导许多公司参与一起建立的一种动态网页技术标准JSP技术在Servlet技术基础上发展起来的它正在飞速发展中现已成为Java服务器编程的重要组成部分它虽然还未成型但是它必将和J2EE Java 2 Enterprise Edition 一起发展JSP是结合markup 6HTML和XML 和Java代码来处理一种动态页面每一页第一次被调用时通过JSP引擎自动被编译成Servlet然后被执行以后每次调用时执行编译过的ServletJSP提供了多种方式访问Ja
6、va classServletApplets和Web Server因此Web应用的功能可以分成多个明确定义公用接口的组件通过JSP将它们结合在一起com JSP的运行原理在JSP第一次获得来自于客户端浏览器的请求时JSP文件将被JSP引擎JSP engine转换成一个Servlet即将jsp文件编译成Java Class文件当Servlet引擎接收到请求后如果设置了使用最新的JSP它就会去找JSP文件检查该文件在上次编译后是否改动过如果改动过就会重新编译生成新的Servlet最终将请求转交给编译好的Servlet引擎执行如图1-1图1-1 JSP运行原理在编译时如果发现JSP文件有任何语法错误
7、转换过程将中断并向客户端发出出错信息如果编译成功则所转换产生的Servlet代码被编译然后该Servlet被JSP引擎加载到内存中此时JSP引擎还请求了jspInit 方法的执行并对此Servlet初始化JspInit 方法在Servlet的生命周期中只被请求一次然后将被调用来处理客户端的请求和回复操作对于所有随后对该JSP文件的请求服务器将检查该JSP文件自最后一次被存取后是否经过修改如果没有修改则将请求交还给还在内存中的Servlet的jspService 方法执行回复操作由于Servlet始终驻于内存所以响应是非常快的Jsp页面在第一次访问时由于要转化和编译运行速度较慢但是当第二次访问该
8、页时由于文件已经被编译成字节码文件了所以速度非常得快com JSP页面的组成JSP页面看上去像标准的HTML和XML页面并附带有JSP引擎能够处理和解析执行的代码与组件通常JSP代码和组件用于创建在最终页面上显示的文本通常来说JSP页面包括编译指令动作指令声明表达式和程序段等内容1 编译指令使用JSP编译指令 和 内的来指定所使用的脚本语言Servlet实现的接口Servlet扩展的类Servlet导入的软件包JSP指令的一般语法形式为 指令名 值 2 动作指令标识动作指令用于执行某些动作在JSP规范中有2种类型的动作指令的标识第一种是标准动作它定义的是无论在什么版本的JSP引擎或Web服务器
9、下总是可用的动作第二种是自定义动作它通过使用taglib指令来实现例如JSPuseBeanJSPsetPropertyJSPgetProperty就是标准动作3 声明用于声明合法的变量和方法与任何语言相同JSP语言使用变量来保存数据这些变量用declaration元素声明声明的语法为 declaration s 当页面被初始化的时候JSP页面中的所有声明都被初始化除了简单的变量方法也能被声明声明不对当前的输出流产生任何影响4 表达式通过计算表达式所得到的结果来表示某个值表达式的形式为 expression 表达式求值的结果被强制转换为一个字符串并插入到当前的输出流中5 程序段JSP可以在页面中
10、包含的一段程序称之为程序段程序段是一个代码片断在请求的处理过程中被执行程序段可以和页面中的静态元件组合起来创建动态生成的页面程序段在 中定义在这对标识中的所有东西都会被当成JSP程序执行com JavaBean技术介绍JavaBean技术是一种基于Java的组件技术JavaBean组件可以用来执行复杂的计算任务或负责与数据库的交互以及数据的提取等是解决代码重用问题的一种策略以前的组件无法实现真正的代码重用其主要原因就是它们对于处理平台的依赖和对开发语言的依赖过重由于Java语言在这些方面所具有的特点和优势使得基于它的软件JavaBean组件技术倍受人们的关注它的任务就是一次编写可以在任何地方执
11、行可以在任何地方重用JavaBean组件可以在任何地方冲用包括了可以在应用程序其他组件文档Web站点和应用程序构造器工具等多种方案中再利用为了创建和使用Java软件组件JavaBean被实现为一种独立于平台和结构的应用程序接口它的实现可以忽略内部的结构及细节问题只需要定义其外部的特征及对外功能就行其中属性方法和事件三种接口可以独立对外进行开发JavaBean的实质就是一个class文件也可以成为类文件JavaBean以binary格式保存可以保护Java源代码不容易被他人抄袭com JSP的运行环境要运行Jsp注意不是浏览Jsp页面需要有支持Jsp的服务器这里分2种情况一种是自身就支持Jsp的
12、服务器如JrunWeblogicJSWDK等而另一种则是在不支持Jsp的服务器上安装Jsp引擎的插件如在IISApache等服务器上安装WebSpheretomcatResin等插件其中主流服务器是Weblogic和tomcatWeblogic是一款功能强大的服务器软件配置比较简单而且Jsp的扩展功能较多附带了数据库的JDBC驱动程序支持JHTML 一种与Jsp十分相似的技术 是目前市场占有率最高的服务器不过Weblogic的运行情况不太稳定使用它调试Jsp文件出现语法错误或者数据库连接错误时Weblogic就有可能崩溃Tomcat服务器是Apache Group Jakarta小组开发的一个
13、免费服务器软件适合于嵌入Apache中使用而且它的源代码可以免费获得你可以自由地对它进行扩充访问的地址 httpjakarta apacheorgtomacatindexhtml Tomcat服务器的兼容性很好如WebLogic服务器采用其为Web服务器引擎Jbuilder将其作为标准的测试服务器Sun公司也将其作为JSP技术应用的示例服务器不足之处是它的配置比较麻烦而且有一些安全性的问题没有解决但是Tomcat服务器有众多大软件公司的支持而且服务器的性能稳定其发展前景很好13 系统开发环境com 服务器的配置前面介绍了JSP的生命周期为了说明JSP对运行环境的要求先简单的介绍一下它的运作过程
14、服务器在接收到客户端传过来的一个页面请求时先判断是否是JSP页面请求从扩展名来判断如果不是只是一般的HTML页面请求则直接把HTML文档传给客户端完成客户端与服务器的一次连接如果判断是JSP页面请求则由JSP引擎或Servlet引擎将JSP页面代码转换成Servlet代码再通知服务器上的JVMJava虚拟机对转换过来的Servlet代码进行编译将生成的字节码文件放在服务器上相应的地方并执行编译后得到的字节码然后把结果传送给客户端这样就完成一次连接以后如果有相同的JSP页面的请求则直接由JSP引擎通知JVM执行已有的字节码并把结果传送给客户端 从上面JSP运作全过程可见运行JSP最少需要三样东西
15、JSP引擎Web服务器和JVM最常用的Java开发工具就是JDK和Jbuilder它们之间的很大不同就是JDK是字符界面而Jbuilder是窗口界面本系统直接采用JDK作为JVM和java编译器所用的操作系统是Windows2000服务器采用的是tomcat利用了它充当Jsp引擎同时还利用了它的信息发布功能首先把JDKtomcat安装到本地硬盘D盘根目录下下面详细的介绍如何配置运行环境 配置环境变量第一步进入我的桌面右击我的电脑选择属性选项进入系统属性对话框单击高级标签如图1-2所示图1-2第二步点击上图箭头所示环境变量进入图1-3画面图1-3第三步单击 系统变量部分的 新建按扭创建JAVA-
16、HOME变量在变量值栏内输入Ccom 如图1-4所示JAVA_HOME指明JDK安装路径就是刚才安装时所选择的路径com此路径下包括libbinjre等文件夹此变量最好设置因为以后运行tomcateclipse等都需要依靠此变量图1-4第四步同样的方法创建CLASSPATH 变量在变量栏内输入JAVA_HOMElibJAVA_HOMElibtoolsjar 要加表示当前路径 CLASSPATH为java加载类 class or lib 路径只有类在classpath中java命令才能识别JAVA_HOMEbinJAVA_HOMEjrebinPath使得系统可以在任何路径下识别java命令Hel
17、loWorld 首先把它放到一个名为HelloWorldAppjava的文件中这里文件名应和类名相同因为java解释器要求公共类必须放在与其同名的文件中然后对它进行编译c javac g HelloWorldAppjava编译的结果是生成字节码文件HelloWorldAppclass最后用java解释器来运行该字节码文件c java HelloWorldApp结果是在屏幕上显示Hello World至此JDK完全安装成功检测tomcat是否配置成功进入CTomcat50bin目录双击startupbat执行文件启动Tomcat服务器成功启动后的界面如图1-6所示我们现在就可以通过浏览器看Tom
18、cat服务器的示例程序了打开浏览器键入httplocalhost8080indexjsp进入Tomcat服务器的主页面 图1-6com 数据库后台环境的配置SQSQL Server是由Microsoft开发和推广的关系数据库管理系统DBMS它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的并于1988年推出了第一个OS2版本 SQL Server近年来不断更新版本1996年Microsoft 推出了SQL Server 65版本1998年SQL Server 70版本和用户见面SQL Server 2000是Microsoft公司于2000年推出的最新版本JSP
19、与SQL Server数据库的连接本系统使用ODBC驱动程序建立SQL Server的数据连接创建步骤如下 1 选择任务栏的开始 控制面板 性能与维护 管理工具 双击ODBC数据源 单击系统DSN标签单击添加选择SQL Server的ODBC数据源如图1-7所示 图1-7定义ODBC数据源的名字和SQL Server所在的服务器如图1-8所示图1-8定义连接数据库的方式使用Windows的验证连接数据库选择要连接的数据库如图1-9所示其于各项保留默认值最后单击完成进入数据源的测试窗口测试成功后显示如图1-10这样就完成了本系统数据库的ODBC数据源的创建图1-9图1-10建立数据库选择任务栏的
20、开始 所有程序 Microsoft SQL Server 企业管理器然后右击数据库选 新建数据库如图1-11在弹出的对话框中输入数据库名完成后回到图1-11的界面单击 数据库选择你刚刚建立的数据库cart右击选择新建表选项这样就可以创建自己的数据表了通过建好的数据表就组成了数据库图1-11第二章 需求分析21 系统说明本系统是一个中小型的电子商务系统-网上书店可以为各类用户提供方便的在线买书环境符合目前国内流行的电子商务模式用户可以在系统中实现注册浏览商品搜索查询商品下定单处理定单等功能管理员可以通过用户管理定单管理商品管理评论管理等管理功能来对系统进行维护更新网站的组成有以下几个子系统组成1
21、 主页显示欢迎界面提供近期的书本2 购物车处理订购并显示想要订购的书本3 查询系统通过书本编号书本名称来查询是否有自己需要的书本4 用户注册系统处理新用户的注册和老用户买书时的确认22 系统功能简介com 基本功能游客可以浏览网站用户登陆用户能够浏览网站提供搜索引擎使用户能够按特定的条件对所需商品进行搜索用户下定单购买商品用户处理定单com 用户界面设计23 系统运行环境操作系统Windows 9XWindows NT WorkstationServer 40以上Windows 2000 ServerProfessionalWindows XP ProfessionalCPU没有很高的要求只要
22、能够顺利运行Windows系列操作系统就可以了当然CPU的处理速度越快运行JSP代码的效率越高内存最低配置32MB建议使用64MB以上内存如果使用Windows 2000或Windows XP建议使用128MB以上内存硬盘空间至少需要50MB以上的硬盘空间来安装所需的组件运行JSP的服务器端要求如表21所示表21操作系统需要安装的J2SDK TomcatWindows 98J2sdk-1_4_1_01 Tomcat 40以上Windows NT 40 ServerJ2sdk-1_4_1_01 Tomcat 40以上Windows 2000J2sdk-1_4_1_01 Tomcat 40以上Wi
23、ndows XPJ2sdk-1_4_1_01 Tomcat 40以上第三章 系统设计31 系统设计思想本系统采用三层架构设计它的工作原理如图3-1所示图3-1采用三层构架以后用户界面层通过统一的接口向业务层发送请求业务层按自己的逻辑规则将请求处理之后进行数据库操作然后将数据库返回的数据封装成类的形式返回给用户界面层这样用户界面层甚至可以不知道数据库的结构它只要维护与业务层之间的接口即可32 系统功能模块化如图3-2为本系统的功能模块图图3-233 数据库设计数据库在一个信息管理系统中占有非常重要的地位数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响合理的数据库结构设计可以提高数
24、据存储的效率保证数据的完整和一致com 数据库需求分析针对一般在线书店的需求得出如下需求信息用户分为游客和已注册用户订单分为单张详细订单和总订单一个用户可以购买多本图书一个用户对应一张订单一个列表对应多张订单针对本系统功能分析总结出如下的需求信息用户包括数据项用户ID用户名密码图书包括数据项图书编号图书名价格图书介绍订单列表包括数据项订单编号图书编号购书数量订单包括数据项订单编号用户编号下单时间com 数据库概念结构从本系统中规划出的实体有用户实体图书实体订单实体订单列表实体实体之间关系的E-R图如图3-3所示 1 N M N 1 L N图3-3用户信息实体的E-R图如图3-4所示图书实体的E
25、-R图如图3-5所示订单实体的E-R图如图3-6所示订单列表实体的E-R图如图3-7所示com 数据库逻辑机构设计在线书店数据库中各个表的设计结果如下面的标和所示表3-8为图书信息列表表3-8表3-9为用户信息列表表3-9表3-10为订单总表记录某个用户的订单信息表3-10表3-11为订单表记录但张订单的具体信息表3-11第四章 详细设计41 系统概述我设计的这个系统是一个由JSP实现的网上购书系统它实现了基本的登录验证查询商品分页处理购物车处理以及订单处理功能其主要界面见图4-1图4-142 系统主要文件 这个购书系统主要有2类文件一类是Bean文件我把它们统一放在了cart文件夹里保存在j
26、akarta-tomcat-comcommonclassescart下这是tomcat要求的默认存放Bean的路径另一类是jsp文件保存在jakarta-tomcat-comwebappsROOT这是tomcat的默认工作环境Bean文件CartManagerjavaOrderEntityjavaOrderItemEntityjavaProductEntityjavaUserEntityjavaJsp文 件cartjsp43 详细代码及说明com户实体的Bean1用户作为实体我把他的id 姓名密码作为其属性在Bean里面做了定义它们都是和数据库里的user表相对应的在这个Bean里封装的方法也
27、主要是对这个表进行操作这个几个属性都被定义为类的私有成员外界不可访问private String idprivate String userNameprivate String userPassword2构造函数里做了2件事情第一寻找数据库连接驱动第二对上面的3个私有成员初始化public static String sDBDriver comJdbcOdbcDriverpublic static String sConnStr jdbcodbccartpublic static Connection conn nullpublic UserEntity String idString use
28、rNameString userPassword try ClassforName sDBDriver 采用ClassforName方法显式加载一个驱动程序 catch comsNotFoundException e Sycomtln UserEntity egetMessage thisid idthisuserName userNamethisuserPassword userPassword 根据上面对变量sDBDriver sConnStr的定义和初始化可以看出我在连接数据库的时候采用的是jdbc-odbc桥的方式这种方式采用的驱动是JDK自带的不需要另外安装但是为了与特定的数据库连接
29、我们必须建立一个数据源cart给3个属性赋值我利用了this指针3这个类我封装了2类方法一是查找特定用户名的所有记录代码如下public static UserEntity queryUser String userName throws SQLException try ClassforName sDBDriver catch comsNotFoundException e Sycomtln UserEntity egetMessage query from databaseString sql select iduser_nameuser_password from user where
30、user_name ResultSet rs nulltry conn DriverManagergetConnection sConnStr PreparedStatement prepStmt connprepareStatement sql prepStmtsetString 1userName rs prepStmtexecuteQuery catch SQLException ex Sycomtln OrderItemEntity executeQuery exgetMessage UserEntity user nullif rsnext user new UserEntity r
31、sgetString 1 rsgetString 2 rsgetString 3 return user 这个函数有1个参数String userName就是通过这个用户名在user表里查询相应的用户的要查询数据库里user表就必须先连接数据库连接数据库第一步是加载驱动之后就是进行连接我采用DriverManager类的getConnection方法来建立与cart数据源的连接连接成功后返回一个Connection类的对象conn要查找特定用户名的纪录其实就是对uesr进行查询操作PreparedStatement对象就是用于查询语句的执行它是Statement的子类与Statement不同的
32、地方PreparedStatement对象可以接受参数这里需要接受的参数是user_name然后进行预编译在每一次执行这个查询都可以给sql语句传输不同的user_name这样大大提高了灵活性要想查询后的结果最后显示给用户必须对ResultSet对象进行操作即对rs进行操作我在程序里是把该记录赋给一个UserEntity对象该类封装的另一种方法是用户名和密码的获得这个主要是为了方便后面验证用户合法性使用public String getUserName return userName public String getUserPassword return userPassword com品实
33、体的Bean虽然我做的是一个购书系统但考虑到系统的可扩展性我把书当作一种商品来进行定义同样参照数据库里的product表我给商品这个类定义了如下4个属性商品id商品名称商品价格商品note其类型同样是该类的私有属性private String idprivate String productNameprivate String productPriceprivate String productNote其构造函数和用户实体类基本上一致所以代码及其说明我在这里就省略了对商品的操作也主要是2类一类是对特定商品的查询其原理和查询用户是一样的但是有一点小小的区别即查询商品可以使查询所有的商品或者是查询
34、特定id的商品我通过以下代码把这2种查询合在了queryProduct这个函数里String sql select idproduct_nameproduct_priceproduct_note from product if productIdcompareTo 0 sql sql where id Vector v new Vector ResultSet rs null其关于连接数据库查询记录的代码和上面的大致雷同所以在这里就省略了显示商品是分页显示的其代码如下while rsnext iif i pageCountpageSize if i pageCount1 pageSize va
35、dd new ProductEntity rsgetString 1 rsgetString 2 rsgetString 3 rsgetString 4 elsebreak 这一段代码的主要功能是每一页最多显示pageSize个商品如果超过pageSize个就分页显示PageSize在后面将会定义其值我设置为10第二类方法是查询商品的id全称价格和note 例如查找商品的IDpublic String getProductId return id com 实现订购单实体的Bean 客户每次购买一种商品都会产生一次订购单它包括订单号所购买的书号所购买这种书的数量这些构成了这个类的私有属性priv
36、ate String idprivate String orderIdprivate String productIdprivate String productNum客户每次选中一种商品后点击放入购物车就会产生一个订单其实现代码如下String sql insert into order_item order_idproduct_idproduct_num values ResultSet rs nulltry conn DriverManagergetConnection sConnStr PreparedStatement prepStmt connprepareStatement sq
37、l prepStmtsetString 1orderId prepStmtsetString 2productId prepStmtsetString 3productNum prepStmtexecuteUpdate 订购单书号购买数量都是作为参数传过来的很明显新建一张订购单其实就是在order_item表里插入一条新纪录就可以了其原理已经在上面说过来了就不在此重复了2在后面的购物车里一名顾客的最终消费总额就是根据这里一张张的订购单得到的所以查找特定订单号的订购单是这个类里面不可缺少的方法它的算法实质上就是条件查询和前面的无条件查询相比我只把sql语句作了改动String sql selec
38、t idorder_idproduct_idproduct_num from order_item where order_id 第3个被封装的方法是设置获得订购单号书号定购数量并且还可以获得session pricecom 实现购物车实体的Bean在现实生活中人们去超市买东西都是把商品放在一个购物篮里等到把所有要买的东西选购完毕后一起拿到收银台前付钱我在程序里定义的购物车实体就是模拟这个功能作为购物车购物人购物时间所购书的总价格都是必不可少的private String idprivate String userNameprivate String orderDateprivate Stri
39、ng orderPrice我觉得在这个Bean里面主要要解决的一个问题如何解决一个新的购物车当一个顾客买完书提交购物车后我们必须插入一个新的购物车纪录这是由insertOrder 方法来实现的其插入代码如下conn DriverManagergetConnection sConnStr PreparedStatement prepStmt connprepareStatement sql String curDate comndargetInstance getTime toString prepStmtsetString 1userName prepStmtsetString 2curDat
40、e prepStmtsetString 3orderPrice prepStmtexecuteUpdate 这里插入的原理和前面是相同的但是有一个地方需要解释即购物时间字段是采用的comndargetInstance getTime 这是一个库函数被封装在javautil在这个类定义的开头我把这个库文件包含进来import javautil这个方法返回的结果必须把转化成String否则后面插入数据库时会出现类型不匹配的错误toString 就是用来实现类型转换的为了方便后面对这个购物车进行操作我在这个方法里还获得了该购物车的id String selectStatement select id
41、 from orderlist where user_name order by id desc PreparedStatement prepStmt connprepareStatement selectStatement prepStmtsetString 1userName ResultSet rs prepStmtexecuteQuery rsnext String result rsgetString 1 return result在sql里查询特定用户购物车的id号并且按照降序排列是因为针对一个网上购书系统顾客可以多次在这里购书那么在购物车表单里针对一个顾客会有很多条他的购物纪录而
42、在数据库里各条记录的id是安装时间先后顺序逐渐递增的如果安装降序排列那么得到的第一条记录则是最新插入的纪录result rsgetString 1 表示只把该条记录的第一个字段传给result即把购物车的id号传给resultcom 实现购物实体的Bean1买书的第一步便是用户登录现在购书网站都要求已经注册过的用户才能购买书籍这样便于网站管理checkUser String userNameString userPassword 就是用来检验用户的合法性的public int checkUser String userNameString userPassword int result 0Us
43、erEntity user null try user UserEntityqueryUser userName catch SQLException ex Sycomtln exgetMessage if user null return 0String pass usergetUserPassword if passcompareTo userPassword 0 result 1thisuserName userName return result 这个函数传过来的2个参数分别是用户登录时候填写的用户名和密码前面已经介绍过在UserEntity里面有一个查询特定用户名的记录的方法我根据用
44、户登录上填写的用户名查询记录queryUser userName 并把结果赋给一个对象user把传过来的密码和和这个对象的密码比较passcompareTo userPassword 0如果相同则用户是合法的可以购买本网站的书籍result 1如果不相同则说明他是非法登录的只能浏览网站不能买书result 0Result就是这个函数的返回值是一个整型变量2证明是合法用户后就必须给这个用户一个购物车用户每次选中一本书点击放入购物车就必须添加一个订购单这就相当于把用户要买的书放入购物车里insertOrder 就是用来实现这些的其主要代码如下public void insertOrder inse
45、rt intoDataBase try if orderPrice 0 returnOrderEntity oe new OrderEntity nulluserNamenullIntegertoString orderPrice insert orderorderId oeinsertOrder 创建一个购物车并且获得它的id号insert order itemsfor int i 0i orderItemsize i OrderItemEntity oi OrderItemEntity orderItemelementAt i oisetOrderId orderId oiinsertOr
46、derItem catch SQLException ex Sycomtln InsertOrder executeQuery exgetMessage clear order variableorderItemremoveAllElements orderPrice 0 当orderPrice 0说明用户还没有开始买书在这个时候创建购物车并且获得它的id号保存在orderId这个变量里一个客户可以有很多张订购单但是购物车id号是一样的所以在插入订购单的时候必须把其购物车的id号设置为orderId3addOrderItem String productIdString productPric
47、e 实现的是购买一种商品多次public void addOrderItem String productIdString productPrice for int i 0i orderItemsize i OrderItemEntity oi OrderItemEntity orderItemelementAt i String pId oigetProductId if pIdcompareTo productId 0 int num IntegerparseInt oigetProductNum numoisetProductNum IntegertoString num 修改购买pro
48、ductId的书的数量thisorderPrice IntegerparseInt productPrice 总价格要加上新买的书的价格return OrderItemEntity oiNew new OrderItemEntity nullnullproductId1IntegerparseInt productPrice orderItemadd oiNew thisorderPrice IntegerparseInt productPrice 因为每点击一次放入购物车只能购买相应的商品一次并且数量之能为1但是购买的是同一个商品其productId是一致的要重新写入一张订购单就必须把原来p
49、roductId的订购单修改一下就可以了比较用户确实是买的一样id的书pIdcompareTo productId 如果是则修改订购单的数量num把总价格加上本书的价格thisorderPrice IntegerparseInt productPrice 通过以上的操作把修改后的结果作为新的属性重新插入成新的订购单4用户可以购买一种书多次那么当它放入购物车后发现拿多了也应该可以把多余的退出来其实现原理和addOrderItem是一样的其具体代码陈列如下public void deleteOrderItem String productId for int i 0i orderItemsize
50、i OrderItemEntity oi OrderItemEntity orderItemelementAt i String pId oigetProductId if pIdcompareTo productId 0 int num IntegerparseInt oigetProductNum -numoisetProductNum IntegertoString num if num 0 orderItemremoveElementAt i thisorderPrice- oigetPrice return 在CartManager类里还封装了一个书查询的方法主要是调用了Produc
51、tEntity类里的queryProduct方法需要说明的地方是先是查询结果的时候分页显示的每页显示的书籍的资料最多不超过10本这是由pageSize这个变量来实现的关于这个变量我把它定义成CartManage的私有成员private int pageSize 10public void setPageSize int pageSize thispageSize pageSize com 前台运行程序cartjsp通过这个jsp程序我实现了3个功能1显示主页面2把主页面里浏览者的资料和请求传给后台的Bean来处理3调用Bean来实现系统的登录查询分页处理购书等功能在程序的开头有这样2条语句 p
52、age language java import javautilcart jspuseBean id cartManager scope session class cartCartManager 上面已经说明我把所有的Bean文件都放在了cart里面要使得能在jsp文件中使用它们就必须用import把cart包含进来下面我想介绍一下useBean这个动作通过useBean动作我建立了一个类型为cartManager的Bean对象cartManager我实现的所有功能都是通过调用这个对象的方法来实现的1 我把主页面分为3个部分每个部分作为一个表格来处理实现登录框的表格 table border 1 width 780 align center td
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽电子信息职业技术学院《音乐鉴赏》2024-2025学年第一学期期末试卷
- 台州学院《食品物性学》2024-2025学年第一学期期末试卷
- 菏泽学院《隧道工程双语》2024-2025学年第一学期期末试卷
- 湖北中医药高等专科学校《动力础》2024-2025学年第一学期期末试卷
- 南京邮电大学《建筑与装饰工程估价课程设计》2024-2025学年第一学期期末试卷
- 西安科技大学《数据可视化分析》2024-2025学年第一学期期末试卷
- 呼伦贝尔学院《营销业务实训》2024-2025学年第一学期期末试卷
- 南宁师范大学《室内装饰与陈设》2024-2025学年第一学期期末试卷
- 湖南司法警官职业学院《编排设计》2024-2025学年第一学期期末试卷
- 青海卫生职业技术学院《机械制图A(下)》2024-2025学年第一学期期末试卷
- 2024年村秘书述职报告
- 私房摄影保密协议书
- 天麻买卖合同协议
- 展览会会务服务投标方案(技术方案)
- 2025届四川省泸州市高三下学期第三次教学质量诊断性考试英语试题(原卷版+解析版)
- 胸痹心痛护理个案
- 船闸水工建筑物设计规范
- 铝塑板装饰施工方案
- 心电图操作及简单解读
- 技法儿童绘画课件
- 人教版八年级物理上册各章单元测试题及答案 (一)
评论
0/150
提交评论