1、摘要 进入20世纪90年代以后以因特网为代表的计算机网络得到了飞速的发展,以从最初的教育科研网络逐步发展成为商业网络。人们希望能够从书中得到知识,就需要有一个快捷高效的购书环境,建立一个网上综合性的售书网站,可以满足这方面的需求,它还提供给用户网上浏览、查询及订购服务。 论文主要介绍了“网上书店”的开发背景和研究内容,对系统需求作了详细的分析,设计和实现了网上书店系统。本系统采用当今流行的JSP技术,配合JavaScript,使用Mysql数据库及MyEclipse工具开发。论文对系统的需求分析、系统总体架构及设计进行了详细地阐述,主要实现了以下功能:会员注册、浏览图书详细信息、购物车、订
2、单、订单管理等。 关键词:网上书店,JSP,Mysql,MyEclipse ABSTRACT Into the 1990s after an Internet representative of computer networks has been the rapid development, from initial education and research network as a business network. People want to be able to gain knowledge from boo
3、ks, you'll need to have a quick and efficient shopping environment, establish a comprehensive online bookselling site, you can meet this demand, it also provides to the user to browse, query and online subscription services. Paper introduces the "online bookstore" development background and resea
4、rch content, a need which the system detailed analysis, design and implement the online bookstore system. The system uses JSP technology popular today, with JavaScript, using the Mysql database and MyEclipse tool development. Thesis system demand analysis, overall system architecture and design elab
5、orated in detail, the main realization of the following features: Member Registration, browsing the book details information, shopping Cart, orders, order management and so on. Keywords: Online Bookshop,JSP,Mysql,MyEclipse 目录 摘要 I ABSTRACT II 目录 III 第1章 引言 1 1.1 背景 1
6、 1.2 研究内容及拟解决问题 2 第2章 系统开发环境 3 2.1 系统环境 3 2.2 开发工具介绍 3 2.2.1 Tomcat 3 2.2.2 MyEclipse 3 2.2.3 Mysql 4 2.3 系统开发技术简介 4 2.3.1 JSP和JavaScript 4 2.3.2 Java Servlet 5 2.3.3 JavaBean 5 2.3.4 Hibernate 5 第3章 网上书店系统分析 7 3.1 需求分析 7 3.2 系统模块设计 8 3.3 网上书店的结构体系 9 3.4 系统功能设计 9 3.4.1 用户界面 9 3.4.
7、2 购物车界面 9 3.4.3 订单界面 9 3.5 数据库设计与实现 10 3.5.1 数据库E-R图 10 3.5.2数据库表设计 11 第4章 系统设计 13 4.1系统概述 13 4.2 功能设计与实现 13 4.2.1网上书店基本流程 13 4.2.2用户界面设计与实现 14 第5章 结束语 24 5.1 总结 24 5.2 展望 24 致谢 25 参考文献 26 26 第1章 引言 1.1 背景 普通书店的发展是大家有目共睹的。改革开放以后,尤其在城市,除了新华书店,各种国有
8、私营、个体的书店、书摊比比皆是,综合书店、专业书店、精品书店、工具书店、电子书店应有尽有。此外,还有国外图书业巨头的介入,如贝塔斯曼,科利华。这些国外公司的加入,不仅带来了更多的书,还引入了诸如会员制这样的图书营销新理念。整个图书市场一片繁荣,在这种情况下,网上书店的加入无疑将使得竞争更加激烈,但从另一个方面看,只有在这种激烈的 下,网上书店的优势才能得以体现。 网上书店与传统的书店相比有许多新特点: (1)书写电子化,传递数据化。尽可能采用无纸贸易,实现快速准确、双向式数据和信息交流,可借助非实时的电子邮件和实时的讨论组来了解图书市场和图书信息,提供异地交流的形式。 (2)没有店面租
9、金成本。网上书店只需一台连在网络上的服务器或租用部分网络服务器空间即可。 (3)没有图书库存的压力。可将网上订单直接传递给出版社,出版社可实行零库存印刷。 (4)便于收集读者信息,为读者提供个性化服务。根据读者浏览、购买的信息,分析读者的阅读兴趣,当读者再次访问时直接向其推荐有关图书或定期向其发送有关图书的电子邮件。 (5)品种规模大,经营时间久,上架寿命长。一般传统的大型书城,图书品种不超过20万种,网上书店在理论上可有无限多的品种。“网络不打烊”,只要服务器工作正常,网友就能查到并订购图书,不受时间的限制。 (6)实行无国界经营。只要知道域名,全世界都可访问,不受空间的限制。
10、 1.2 研究内容及拟解决问题 网上书店主要是通过Internet来实现图书的快速交易,节省消费者的时间。本次毕业设计开发的网上书店有以下几个重要的模块:用户登录模块、 用户消费者购书模块。用户登录需用户名和密码,新用户需注册,然后在登录网站进行购物。用户消费者在进行购书时可以对自己感兴趣的书籍进行搜索,查看书籍的具体信息,然后进行对书籍的订购。 本课题研究的基本内容如下所述。 (1) 面向服务的网上书店的研究。 (2) 基于Java技术设计动态网页的研究。 (3) 集成基于JSP+MySQL技术实现的网上书店系统。 本课题拟解决的问题如下所述。 (1) 解
11、决网上书店用户登陆的问题。 (2) 解决网上书店用户在线购书的问题。 (3) 解决网上书店购物车的相关问题。 第2章 系统开发环境 2.1 系统环境 本系统采用B/S结构,编程环境为WinXP+jdk6.0+Mysql数据库。运行环境是windowsXP+Mysql+Tomcat6.0。 2.2 开发工具介绍 2.2.1 Tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成
12、由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是6.0。 2.2.2 MyEclipse MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程
13、序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。 Eclipse的设计思想是:一切皆为插件。Eclipse的核心是非常小的,其它所有的功能都以插件的形式附加到这个Eclipse核心之上。这样的功能插件包括它的图形API(称为SWT/JFace)、Java开发环境插件、插件开发环境等。Eclipse还对这些插件的协同工作提供了良好的支持,不仅安装简单,而且还可以无缝结合。 Eclipse对这些插件是动态载入动态调用
14、的。所谓动态就是指,Eclipse启动后要真正用到这个插件时,它才会被调入内存。当插件不再被使用时,它就会被在适当的时候清除出内存。因此即使装了一大堆插件在Eclipse里,也不必担心某些不常用的插件白白占着内存。 2.2.3 Mysql MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 2.3 系统开发技术简介 2.3.1 JSP和JavaScript
15、JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网
16、页所需要的功能。JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JavaScript 使网页增加互动性。JavaScript 使有规律地重复的HTML文段简化,减少下载时间。JavaScript 能及时响应用户的操作,对提交表单做即时的检查,无需浪费时间交由 CGI 验证。因它的开发环境简单,不需要Java编译器,而是直接运行在Web浏览器中,因而倍受Web设计者的所爱。 2.3.2 Java Servlet Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。Serv
17、let是使用Java Servlet应用程序设计接口及相关类和方法的Java程序,它在Web服务器上或应用服务器上运行并扩展了该服务器的能力。Java Servlet对于Web服务器就好像Java Applet对于Web浏览器。Applet装入Web浏览器并在Web浏览器内执行,而Servle则是装入Web服务器并在Web服务器内执行。Java Servlet API定义了Servlet和服务器之间的一个标准接口,这使得Servlet具有跨服务器平台的特性。Servlet通过创建一个框架扩展服务器的能力,采用请求-响应模式提供Web服务。 2.3.3 JavaBean JavaBean
18、是描述Java的软件组件模型,JavaBean就是一个Java类,是一种Java语言写成的可重用软件组件,它在内部有接口或有与其相关的属性,以便不同人在不同时间开发的bean可以询问和集成[5]。非可视化的JavaBean与JSP结合起来使用,在JSP程序中常用JavaBean来封装事务逻辑(功能实现部分)如数据运算、数据处理、数据库操作等,然后在JSP网页中调用,而JSP文本着重的是网页界面设计,实现了业务逻辑和前台显示部分的分离,这样不仅使JSP网页变得清晰,而且可以节省软件开发时间和降低以后维护的难度,使系统变得健壮和灵活。 2.3.4 Hibernate Hibernate是一
19、个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对
20、象进行存取,还能够进行事务控制。 第3章 网上书店系统分析 随着计算机科学技术的发展,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入社会各个领域并发挥着越来越重要的作用。在当今社会,越来越多的行业都采用计算机及网络技术来管理或处理事务,以便提高工作效率。 本系统是一个小型的电子商务系统----网上书店,可以为各类用户提供方便的在线买书环境,符合目前国内流行的电子商务模式。参考了网上的一些书店,如当当网,晨星书店等,自己设计了一些比较简单的页面,实现了网上书店的基本功能。用户可以
21、在本系统中实现注册、浏览商品、搜索查询商品等功能。 3.1 需求分析 网上书店的、是网络环境下图书发行的典型代表,也是未来的发展趋势。网络书店是纯虚拟的,采用以网络作为平台搜集、整理图书信息,用网下配送公司实施速递服务的电子商务形式,是网上零售业的典型代表,和传统图书发行相比,在信息发布、购买支付、物流配送等环节需要更多的网络手段。 根据网上书店的基本需求,本系统需要完成的具体任务如下: 会员注册:为了能够实现图书商品的购买,需要管理客户相关的联系方式、邮件等相关的信息。 购物车管理:当客户选择购买某图书产品时,应该能够将对应图书信息,如:价格、数量记录到对应的购物车中,并允许客户返
22、回书目查询页面,选择其他商品,并添加到购物车中,当用户点击生成订单时,若用户没用登陆,应跳转到登录页面,登录完成后能回到刚才页面。当对应的购物订单生成后,应该能够自动清除以生成订单的购物车中的信息。 订单处理:对应客户购买图书商品信息的需求,在确定了所购图书商品的价格、数量等信息后,提示用户选择对应的送货方式及付款方式,最终生成对应的订单记录,以便于网站配货人员依据订单信息进行后续的出货、送货的处理。 3.2 系统模块设计 1.购物车管理 用于维护每一个进入网上书店的客户对应的购物车。即将客户所选购的图书商品信息记录到对应的购物车中,以便于到收银台进行结账处理。 2.会员注册
23、实现网上书店客户信息的注册、及身份验证。将用户的邮箱地址和昵称保存到数据库中。 2.订单管理 实现网上书店客户订单的生成。由于目前网上商城普遍采用的方式为送货上门或者邮寄,因此需要收集与客户相关的联系方式、通信地址等信息。 下图为网上书店系统模块图: 网上书店 订单模块 购物车管理模块 用户管理模块 收件人联系方式 收件人姓名 清空购物车 查看购物车 添加至购物车 用户登录 用户注册 图3-1系统模块图 3.3 网上书店的结构体系 本系统采用的是JSP技术+JavaBeans+
24、Mysql数据库三层结构体系: Web页面 JSP表示层 数据操作 JSP应用程序 JAVABEAN层 网上书店 数据库 数据层 图3-2 结构体系图 3.4 系统功能设计 3.4.1 用户界面 浏览图书:用户可以分页浏览图书书目,查找自己喜欢的书。如果用户还没有注册或者没有成功登陆则不能购买图书。 用户注册:在这里用户需要注册的基本信息,其中Email和密码是比较重要的。 用户登录:用户需要购买图书,则必须成为会员之后登陆才能进行购买。 3.4.2 购物车界面 购物车功能 更改图书数量:用户可以自己修改所购图书的数量。 删除和恢复图书:用户可以删除
25、已选中的图书,也可以恢复已删除的图书。 3.4.3 订单界面 确认所购图书。 填写订单资料:用户需要填写送货的相关信息。 订单生成:将用户填写的信息存入数据库,以便于送货。 3.5 数据库设计与实现 3.5.1 数据库E-R图 下图是数据库的E-R图: 住址 密码 用户编号 总价 书名 用户名 定价 拥有 用户名 电子邮件 购物车 用户 添加 购买 作者 图书 出版社 页数 概括 出版时间 字数 图3-3 数据库E-R图 3.5.2
26、数据库表设计 数据库中各个表的设计如下面的图所示。 表3-1为图书信息列表 表3-1图书信息表 属性 类型 长度 是否主码 是否可以为空 id Int 12 是 否 author Varchar 200 否 否 publishing Varchar 200 否 否 publishing_time Varchar 20 否 否 word_number Varchar 15 否 是 which_edtion Varchar 15 否 是 total_page Varchar 15 否 是 print_n
27、umber Varchar 20 否 是 folio Varchar 15 否 否 isbn Varchar 25 否 是 这是记录图书信息的实体。在消费者查找想要购买的图书或管理员要对图书进行管理即增加、删除、修改操作时将会使用到此表中的数据。 表3-2为用户信息列表。 表3-2 用户信息表 字段名 数据类型 长度 是否主键 是否为空 ID Int 12 是 否 email Varchar 50 否 否 nickname Varchar 50 否 否 password Varchar 50 否 否 us
28、er_integral Int 12 否 否 is_email_verify Int 1 否 否 email_verify_code Varchar 32 否 否 last_login_time Int 32 否 否 last_login_ip Varchar nt 2 否 否 用户表代表用户这一个实体。用户通过注册将自己的信息传到表格中,等以后进入网站就行购书时,网站管理者就能根据表里的数据进行及时的发货。 表3-3为购物车信息列表。 表3-3 购物车信息表 字段名 数据类型 长度 是否主键 是否为空 ID Int 12
29、 是 否 Order_id Int 10 否 否 Product_id Int 10 否 否 Dang_price Double 200 否 否 Product_num Int 10 否 否 amount Double 200 否 否 购物车列表这一实体,用户可以通过它来查看自己的购书信息(图书数量,价格等)。 表3-4为订单信息表。 表3-4订单信息表 属性 类型 长度 是否主码 是否可以为空 ID Int 10 是 否 user_id Int 10 否 否 status Int 10
30、否 否 order_time Int 20 否 否 total_price Double 300 否 否 receive_name Varchar 100 否 是 full_address Varchar 200 否 是 postal_code Varchar 8 否 是 mobile Varchar 20 否 是 订单信息表是用来记录订单信息的一个实体。管理员也可通过这个表对用户下的订单进行处理。 第4章 系统设计 4.1系统概述 作为一个网上书店,本系统中实现注册、浏览商品、下定单等功能;管理员可以通过用户管理、定单管理
31、商品管理等管理功能来对系统进行维护更新。在网上书店买书,可以查到所买图书的更多信息,因为网上书店是一个网站,它有它独特的售书方式和功能。你能更快更便捷得搜索到你想要购买的图书的信息,还能比较许多同一类型的图书,这样你就能找到一本更适合你的图书,比起一般的图书商店,显然这样更加的快捷,也更加的准确。 4.2 功能设计与实现 4.2.1网上书店基本流程 网上书店在运行过程中的基本流程如下图4-1所示: 书店主页 用户注册 用户登录 选择图书 加入购物车 结账 图4-1 基本流程 4.2.2用户界面设计与实现
32、 1)界面头和界面尾设计 为了提高代码的重用性,我把客户界面部分相同的头和尾作成两个独立的块,分别命名为 head.jsp和foot.jsp。在jsp页面中只要通过以下语句就可以实现对两个文件的调用:<%@include file=“/common/head.jsp”%> <%@include file=“/common/foot.jsp”%> 2)用户注册模块设计 在该模块用户需要填写自己的用户资料,例如自己的账号和密码,用户还可以设置自己的昵称。 顾客要想从网上书店上买书,首先要有自己的账号,所以会员注册是顾客买书的前提,在会员注册功能模块中,和其相关的jsp
33、是register_ok.jsp、register_one.jsp和register_two.jsp,相关的Action是RegisterAction.java,相关的业务处理Bean是User.java,相关的持久层处理DAO是UserDao.java。 在register_one.jsp页面中,会要求顾客输入要注册的账号的邮箱,昵称,密码,该页面采用了ajax技术,当输入的邮箱或昵称和数据库中的重复的话,会提示你邮箱或昵称已被注册,同时会有二次密码输入的功能,以防输错密码带来的麻烦,然后点击注册,该jsp界面如图4-2所示。 图4-2用户注册模块 此界面的详细功能: l 提交新
34、用户注册请求,同时提交新用户注册信息的表单 l 提交注册用户姓名、地址、电子邮件地址、电话、用户名、密码以及确认密码的表单元素 l 注册按钮 其页面的主要代码如下:
请填写有效的Email地址,在下一步中您将用此邮箱接收验证邮件。
36、>
您的昵称可以由小写英文字母、中文、数字组成,
长度4-20个字符,一个汉字为两个字符。
37、errors property="nickname" /> 昵称必须填写
38、Action.java,相关的持久层处理DAO是UserDao.java。
在login_form.jsp页面中,会要求顾客输入自己的邮箱以及密码,然后点击登陆即可,该jsp界面如图4-3所示。
图4-3 用户页面
此界面的详细功能:
l 提交用户登录请求,同时提交登录用户信息的表单
l 提交登录用户用户名及密码的表单元素
l 登录按钮
l 提交新用户注册请求的超链接
其页面的主要代码如下:
39、l地址:
41、业务处理Bean是Cart.java、Book.java、Item.java,相关的持久层处理DAO是BookDao.java。
效果如下图4-4所示
图4-4在线购书模块
此界面详细功能:
l 获取图书分类信息
l 图书基本信息集合
l 显示图书名称、价格、销售价格、作者信息
l 提交用户登录请求的超链接
l 提交新用户注册请求的超链接
其主要源代码如下:
43、c:choose> 5)购物车模块设计 在购物车页面,顾客可以根据需要对购物车中的商品进行修改,比如删除某个商品,或者清空购物车,或者通过修改数量来改变要购买的商品的总数,还可以选择继续购物或返回主页,购物车中的信息都保存在session中,只要浏览器不关闭,就能一直保存着,这样即便顾客在不同的页面切换,也不会影响购物车中的信息,若要删除某个商品,只要在该商品前的复选框中选上,然后点击删除所选项就可以把该商品从购物车中删除,清空购物车则会把当前购物车中的所有商品全部删除。该模块运行时效果如图4-5所示: 图4-5在线购书模块效果图 此界面的详细功能: l 获取该用户购物车
44、中信息的集合
l 提交更新购物车请求的表单
l 显示图书销售价格
l 显示图书总价
l 从购物车中移除购买记录信息
l 提交结算付款请求的超链接
其主要源代码如下:
45、 46、td>
47、d class="buy_td_1">
删除
9317290
${it.product.name}
¥${it.product.fixedPrice}
¥${it.product.dangPrice}
${it.number}
变更
48、处理Bean是Order.java、Item.java、Address.java,相关的持久层处理DAO是OrderDao.java。 在订单这个模块当中用户可以填写收货人姓名,收货人地址,邮政编码和联系电话。该模块运行时效果如图4-6所示: 图4-6订单模块图 此界面的详细功能: l 提交注册收货人姓名、地址、邮政编码、联系电话表单元素 l 生成订单 其主要源代码如下:
49、Id="txtEmail" styleClass="text_input" onblur="checkEmail(this.value)" />
请填写收货人的真实姓名。
50、ass="w1"> 收货人地址:
请填写收货人的详细地址