基于Struts的网上书店开发-毕业设计论文.docx

上传人:豆**** 文档编号:29952337 上传时间:2022-08-02 格式:DOCX 页数:67 大小:1.47MB
返回 下载 相关 举报
基于Struts的网上书店开发-毕业设计论文.docx_第1页
第1页 / 共67页
基于Struts的网上书店开发-毕业设计论文.docx_第2页
第2页 / 共67页
点击查看更多>>
资源描述

《基于Struts的网上书店开发-毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于Struts的网上书店开发-毕业设计论文.docx(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、基于Struts的网上书店开发内容摘要伴随着Internet的蓬勃发展,网络购物中心作为电子商务的一种形式正以其高效、低成本的优势,逐步成为新兴的经营模式和理念,人们已经不再满足用途信息的浏览和发布,而是渴望着能够充分享受网络所带来的更加多的便利。网络购物正适应了当今社会快节奏地生活,使顾客足不出户便可以方便快捷轻松地选购自己喜欢的商品。本系统便是尝试用JSP在网络上架构一个动态的电子商务网站,它是在Windows XP下,以Microsoft SQL Server 2000为数据库开发平台,Tomcat网络信息服务作为应用服务器,采用JSP(Java Server Pages)技术开发的网上

2、书店系统。他分前台部分和后台部分,前台部分由用户使用,主要包括用户注册,书籍信息查询等功能;后台部分由管理员使用,主要包括商品管理,处理订单,链接信息管理等功能。建立后的网站系统是一个动态、交互式、具有图书提供、系统管理等功能的电子商务网站。ABSTRACTAlong with the vigorous development of the Internet, e-commerce networks as a shopping center is a form of its highly efficient, low-cost advantages, gradually emerging as

3、 a business model and philosophy, there is no longer meet use and dissemination of information browsing, but a desire to bring the full enjoyment network more convenient. Internet shopping is being adapted to the fast pace of todays society to live, so that customers can enjoy the convenience of fas

4、t and easy way to purchase their own like commodities.The system is trying to use JSP in a dynamic network of e-commerce websites structure, which is in Windows XP, Microsoft SQL Server 2000 for database development in platform, Tomcat application server as a network information services, use JSP (J

5、ava Server Pages) technology development online bookstore system. Prospects and the background of some of his hours, the prospects of users, including users registered, books search functions; Background in part by managers, including commodity management, processing orders, information management,

6、and other functions links. After the establishment of the website is a dynamic, interactive, with commodities, systems management, and other functions of the e-commerce website users.目录第1章 绪论11.1网上书店现状分析11.2 开发背景1第2章 动态网站相关技术22.1 C/S与B/S体系结构22.2 MVC模式22.3 Struts体系介绍及其基本流程3第3章 网上书店系统分析与设计43.1 系统分析43.

7、1.1 系统目标43.1.2 业务流程分析53.2 系统设计53.2.1 功能设计53.2.2 数据库设计73.2.3 开发环境9第4章 基于Struts的网上书店程序设计与实现104.1 程序总体结构104.2公共类设计114.2.1 数据库连接类114.2.2 字符串自动处理类114.3 前台首页设计124.4 用户登录模块154.4.1 用户登录模块总体框架154.4.2 用户登录模块的实现154.5 书籍查询模块234.5.1书籍信息查询模块功能234.5.2书籍信息查询模块的实现23第5章 总结32参考文献33附录34IV第1章 绪论1.1网上书店现状分析随着Internet的发展,

8、网上购物已经成为21世纪网络发展的主流,网上购物也成为了一种购物时尚。卓越亚马逊、当当网、淘宝网等网站已经成为广大消费者日常生活中非常重要的一部分。在网上书店买书,可以查到所买图书的更多信息,因为网上书店是一个网站,它有它独特的售书方式和功能。如用户注册会员功能等,会员类型有:高级会员、金牌会员等。有的网上书店有会员积分设置,如达到一定积分时自动成为高级会员,高级会员会有优惠和特别的服务。还有就是支付方式了,一般网上书店都有三种类型的支付方式:汇款类支付、在线支付、其他支付方式,其中在线支付只要到支付平台开户后,将所获开户信息填入即可。当在网上书店购书后,用户所购图书都在网站上有记录,方便用户

9、查询。网络技术的蓬勃发展和普及使得网上书店成为一种高质量、更快捷、更方便的购书方式,也逐渐成为更多消费者的购书首选。1.2 开发背景一般来说,一个完整的网上书店系统应包括信息流、资金流与物流三个要素,三者相辅相成。信息流是通过电子网络向客户展示所售商品的相关信息,引导客户通过网络进行购物;资金流就是使客户在选择商品后,能够通过网络支付相关费用,一般包括预付款支付、网上银行支付、货到付款支付等多种形式;物流就是把客户所购买的商品通过物流配送系统送到客户手中。第2章 动态网站相关技术2.1 C/S与B/S体系结构传统的C/S(Client/Server)两层结构是通过静态页面在Internet上发

10、布信息。在WEB发展的初期,两层结构中应用程序有一个接口,而访问的数据则位于一个数据库服务器上,客户将其所执行的命令传送给数据库服务器,数据库服务期执行命令,并将结果返回给客户机(如图2-1),在这种结构下,网站上的页面是静态的,无法根据用户的实际情况做动态变化。客户端执行命令数据库服务器返回结果图2-1 基于C/S体系结构 B/S结构,是在客户端与数据库之间加入了一个服务器(如图2-2)。用户通过浏览器向客户端发送HTTP请求,WEB服务器接受用户端的HTTP请求,向用户端发送所请求的数据。网站信息提供者通过更新服务器上的网页来向用户提供最新信息。用户和浏览器之间只有有限的交互,而网站和用户

11、之间没有交互。浏览器服务器数据库HTTP请求数据请求HTTP应答数据获取 图2-2 基于B/S体系结构2.2 MVC模式在MVC经典架构中,它把应用程序分为三个部分:1、模型模型代表了该应用程序的核心功能,它负责处理用户的数据,实现业务逻辑。同时,模型还为视图的显示提供数据,并可被多个视图所共用。2、视图 视图主要指与用户的交互的界面,也即应用程序的外观。视图可以接受用户的输入,但它并不包括任何实际的业务处理,他只将数据转交给控制器。同时,视图还负责展现模型传递给用户的数据,当后台模型更新数据时,视图也应当随之更新它的显示。3、控制器 控制器负责接收用户的请求和数据,接着它会做出判断将请求和数

12、据提交由哪一个模型来处理,最后调用视图来显示模型返回的数据。 模型更新更新视图2视图1获得数据 获得数据改变控制器改变改变事件图2-3 MVC结构概括起来,MVC有如下特点:1、多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护。2、模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术3、应用被分为三层,降低了各层之间的耦合,提高的应用的可拓展性。4、控制层把不同的模型和不同的视图组合在一起,完成不同的请求。5、MVC更符合软件工程化管理的精神,不同的层各司其职,每一层的组件有相同的特征,有利于工程化和工具化产

13、生管理程序代码。2.3 Struts体系介绍及其基本流程Struts是一种方便而实用的web应用框架,很好的实现了MVC模式,使程序员将更多的精力投入后台的业务逻辑设计,而不是底层的web基础框架。Struts框架以ActionServlet作为核心控制器,整个应用程序由客户端请求驱动。当客户端向Web应用程序发送请求时,请求将被Strut的核心控制器ActionServlet;拦截,ActionServlet根据请求决定是否需要调用业务逻辑控制器处理用户请求,当用户请求处理完成后,其处理结果通过JSP呈现给用户。对整个Struts框架而言,控制器就是它的核心,Struts控制器由两个部分组成

14、:核心控制器和业务逻辑控制器。其中核心控制器就是ActionServlet,由Struts框架提供;业务逻辑控制器就是由用户自定义的Action,由应用开发者提供。对于大部分用户请求而言,都需要得到服务器的处理。当用户发送一个需要得到服务器处理的请求时,该请求被ActionServlet拦截到,ActionServlet将该请求转发给对应的业务逻辑控制器,业务逻辑控制器调用模型老处理用户请求;如果用户请求只是希望得到某个URL资源,则由ActionServlet讲被请求的资源转发给用户。 如图2-4所示是的Struts的基本框架。核心控制器业务逻辑控制器HTTP请求 转发请求Struts-co

15、nfig.xml客户端浏览器调用业务逻辑转发请求JSP模型HTTP响应 数据图2-4 Struts的程序运行流程第3章 网上书店系统分析与设计3.1 系统分析3.1.1 系统目标网上书店信息系统的系统目标如下:1、展示最新的书籍信息,不断更新书籍种类,是用户了解最新的图书信息。2、用户可以在网站上修改个人资料、修改个人账户的密码、查询提交的订单以及查询个人在网站上的消费情况。3、对书籍信息进行管理,选择图书类别将图书具体信息和图片信息都存储在数据库中,并可以修改和删除书籍信息。4、可以查看和查询用户详细信息以及用户消费信息。5、对管理员信息和网站公告信息进行维护管理。3.1.2 业务流程分析

16、用户必须注册会员并登陆后才能购买书籍,购买成功后书籍信息放进购物车,生成用户订单,订单信息经用户确认后处理订单,用户登录后可以查看订单信息、修改会员信息以及查询书籍信息。未登录用户不能购买书籍,可以查看新书上架信息、书籍分类展示以及销售排行信息。面向会员的客户端系统流程如图3-1,购物车验证成功用户新品上架书籍展示销售排行用户注册 不是会员订单处理订单确认,发送客户订购信息反馈用户接受情况图 3-1 面向会员的系统流程图系统管理员负责会员管理、书籍信息管理、后台管理员管理,如图3-2验证成功账户验证系统管理员NY订单管理管理员信息管理会员管理公告管理书籍大类管理书籍管理图 3-2 面向管理员的

17、系统流程图3.2 系统设计3.2.1 功能设计网上书店网站分为前台和后台。其中,根据网上书店前台的特点,可以将其分为书籍查询、书籍展示、购物车、会员管理、收银台、订单查询及商城公告7各部分,其中各部分具体功能模块如图4-1所示。网上书店系统前台按大类查看商品按条件查看商品收银台购物车商品展示书籍查询会员管理填写订单信息商城公告结账会员登录会员信息修改品会员注册查看购物车清空购物车添加购物车订单查询销售排行新品上架图 3-3 前台功能结构图根据网上书店后台的特点,可以将其分为书籍设置、书籍大类设置、后台管理员设置、会员设置、订单设置5个部分,其中各个部分及其功能模块图如4-2所示。后台登录网上书

18、店系统后台会员添加后台管理员设置订单设置会员设置书籍设置书籍大类设置订单处理订单查询管理员添加管理员删除管理员查询书籍查询书籍删除会员查询会员删除书籍大类查询书籍添加管理员密码修改书籍大类删除书籍大类添加图3-4 后台功能结构图3.2.2 数据库设计一、数据库需求分析数据库管理系统(DBMS)是一个软件系统,它具有存储、检索、和修改数据的功能。目前,应用比较多的数据库是Oracle、Sysbase、Informix、Microsoft SQL Server、DB2、MySQL等,Microsoft SQL Server 2000是微软公司推出的大型数据库系统,它的 编程接口非常丰富、易用,可以

19、很容易地用组件访问数据库。现在,SQL Server 2000也提供了JDBC编程接口,这样我们就可以非常方便地在Java编程中使用SQL Server了。在网上书店系统设计中采用的便是Microsoft SQL Server 2000。二、数据库概念设计根据以上对系统所作的需求分析和系统设计,规划出本系统中使用的数据库实体分别为:会员实体、书籍实体、书籍大类实体。1.会员实体 会员实体包括会员账号、账号密码、会员姓名、会员年龄、会员邮箱以及会员职业属性。会员实体E-R图如图5-1所示。会员职业账号密码会员姓名会员邮箱会员年龄会员账号会员图 3-5 会员实体E-R图2.书籍实体书籍实体包括图书

20、名、类别编号、作者、出版社、出版时间以及价格属性。书籍实体E-R图如下图5-2所示。类别编号图书名作者出版时间出版社价格书籍图3-6 书籍实体E-R图3.书籍大类实体 书籍大类实体包括类别编号以及类别名属性。书籍大类实体E-R图如图5-3所示。类别编号类别名书籍大类图3-7书籍大类实体E-R图三、数据库逻辑结构设计1、数据库表设计原则:根据上述数据库概念设计,需要设计下面各个数据表,这些表之间相互关联,共同存储着系统所需要的数据。在设计数据表的过程中,根据以下原则:(1)、数据库设计的一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体还可以再划分,实体的划分

21、原则是最好能够比当前系统要开发的实体颗粒度要小。(2)、数据表的信息表结构一定要合适,表的字段数量一定不要过多。(3)、扩充信息和动态变化信息一定要分开存储在不同的表里。(4)、尽量不要出现多对多的表关系。2、数据库表结构详细设计:(1) 会员信息表主要用来保存会员信息。如表5-1所示:表5-1 会员信息表字段名字段描述数据类型是否为空是否主键name会员账号varhar(50)否是password账号密码varhar(50)否否realName会员姓名varchar(50)否否age会员年龄int(4)否否email会员邮箱varchar(50)否否job会员职业varchar(50)否否(

22、2)、商品信息表主要用来保存商品信息。如表5-2所示:表5-2 商品信息表字段名字段描述数据类型是否为空是否主键id序列号varchar(50)否是name图书名varchar(50)否否id类别编号int(4)否否author作者varchar(50)否否publisher出版社varchar(50)否否pubTime出版时间smalldatetime(4)否否price价格money否否(3)、商品大类信息表主要用来保存商品大类信息。如表5-3所示:表5-3商品大类信息表字段名字段描述数据类型是否为空是否主键id类别编号int(4)否是name类别名varchar(50)否否图3-8前台首

23、页3.2.3 开发环境在开发网上书店系统时,软件环境如下:服务器端:操作系统:Windows XPWEB服务器:Tomcat 6.0Java开发包:JDK 1.6数据库:SQL Server 2000客户端:浏览器:谷歌浏览器分别率:1024*768开发工具:MyEclipse 8.0第4章 基于Struts的网上书店程序设计与实现4.1 程序总体结构存放所有网站图片存放所有书籍图片存放所有jsp页面存放公共类的包存放所有ActionForm的包存放所有dao的包存放所有action的包图 4-1 程序总体结构4.2公共类设计4.2.1 数据库连接类在本系统中,对数据库连接类的名称为JDBCo

24、nnection,在该类属性中设置连接SQL Server 2000的驱动、url地址及声明connection类的实例,并通过构造方法获取数据库的连接。具体代码如下:package com.jiangchao.tool;import java.sql.*;public class JDBConnection private String dbDriver = com.microsoft.jdbc.sqlserver.SQLServerDriver;/数据库驱动 private String url=jdbc:microsoft:sqlserver:/localhost:1433;Databa

25、seName=Bookstore;/url地址 public Connection connection =null; public JDBConnection() try Class.forName(dbDriver).newInstance();connection =DriverManager.getConnection(url, sa, ); catch (Exception ex) System.out.println(数据库加载失败); 4.2.2 字符串自动处理类在本系统中,字符串自动处理类名称为CharacterFilter,该类实现了Filter类中的doFilter()方法

26、,该方法作用是将表单中的字符串转换成UTF-8,具体代码如下: package com.jiangchao.tool;import java.io.IOException;import java.io.Writer;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.Se

27、rvletResponse;public class CharacterFilter implements Filter public void destroy() public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException request.setCharacterEncoding(UTF-8);chain.doFilter(request,response);public void init(Filte

28、rConfig filterConfig) throws ServletException 4.3 前台首页设计开发一个网站,好的页面风格和页面框架是非常重要的,特别是对于网上书店更需要有好的页面风格和布局。在本网上书店的首页设计中,很好展示了书店推出的新品上架、销售排行、最新公告等信息,并提供了查看订单、商品分类查询等业务。网上书店前台首页运行结果如图6-1所示:书籍查询模块用户登录网站导航新品上架后台管理商城公告图4-2 网上书店系统前台首页如上图6-1所示的主页面中,用户登录、商城公告、销售排行、网站导航、新品上架、后台登陆入口以及查询书籍信息等模块,并不是仅存在于主页面中,其他功能模块

29、的子页面中也需要包括这些部分。因此,可以讲这几个部分分别保存在单独的文件中,这样,在需要放置相应功能时只需要包含这些文件即可,如图6-2为前台主页面面的布局:main-top.jspmemberLogin.jspbookSorts.jspsearch.jspmessage.jspindex.jspmanger.jspmain-down.jsp图 4-3 前台主页面布局在jsp页面中包含文件有两种方法:一种是应用指令实现,另一种是应用动作元素实现,本系统使用的是动作元素。该动作元素用于向当前的页面中包含其他的文件,这个文件可以是动态文件也可以是静态文件,具体的使用方法:指令用来在JSP页面中包含

30、另一个文件。包含的过程是静态的,即在指定文件属性值时,只能是一个包含相对路径的文件名,而不能是一个变量,也不可以在所指定的文件后面添加任何参数。其语法格式如下: 动作元素可以指定加载一个静态或动态的文件,但运行结果不同。如果指定为静态文件,那么这种指定仅仅是把指定的文件内容加到JSP问价中去,则这个文件不被编译。如果是动态文件,那么这个文件将会被编译执行。由于页面中包含查询模块时,只需要将文件内容添加到指定的JSP文件中即可,所以此处可以使用加载静态文件的方法包含文件。应用动作元素加载静态文件的语法格式如下: jsp:include page=”relativeURL|” flush=”tru

31、e”/ 使用指令和动作元素包含文件的区别是:使用指令包含的页面,是在编译阶段将该页面的代码插入到了主页面的代码中,最终包含页面与被包含页面生成了一个文件。因此,如果被包含页面的内容有改动,需要重新编译该文件。而是用动作元素包含的页面可以是动态改变的,它是在JSP文件运行过程中被确定的,程序执行的是两个不同的页面,即在主页面中声明的变量,在被包含的页面中是不可见的。由此可见,当被包含的JSP页面中包含动态代码时,为了不合主页面中的代码相冲突,需要使用动作元素包含文件。4.4 用户登录模块4.4.1 用户登录模块总体框架用户只有通过登录模块的验证才能进入网站。当用户在图6-1中左侧“用户信息”模块

32、中的“用户名”和“密码”文本框中输入用户名和密码后,单击“登录”按钮,如果验证成功,用户将以会员的身份进入网上书店的首页面,并可在网站中进行购书。用户登录模块的框架如图6-3所示:是否通过验证浏览书籍及进行购物用户登录开始否 是图4-4 用户登录模块框架图4.4.2 用户登录模块的实现由于本系统采用的是Struts框架,因此在实现用户登录模块时,需要编写用户对象的ActionForm类和Action实现类。在Struts框架中,ActionForm类是一个具有get()和set()方法的类,用于获取或设置HTML表单数据。同时,该类也可以实现验证表单数据的功能。Action实现类是Struts

33、中控制器组件的重要组成部分,是用户请求和业务逻辑之间沟通的媒介。1.用户的ActionForm类在用户登录模块中,涉及的数据表是会员信息表,会员信息表保存的似乎会员用户名和密码等信息。根据这些信息可以得出会员模块的ActionForm类。会员模块的ActionForm类的名称为MemberForm,创建MenberForm类的具体代码如下:public class MemberForm extends ActionForm private String name;/会员账号 private String password;/账号密码 private String realName;/会员姓名

34、private int age;/会员年龄 private String email;/会员邮箱 private String job;/会员职业public String getName() return name;public void setName(String name) this.name = name;public String getPassword() return password;public void setPassword(String password) this.password = password;public String getRealName() ret

35、urn realName;public void setRealName(String realName) this.realName = realName;public int getAge() return age;public void setAge(int age) this.age = age;public String getEmail() return email;public void setEmail(String email) this.email = email;public String getJob() return job;public void setJob(St

36、ring job) this.job = job;2.用户的Action实现类会员功能模块的Action实现类继承了Action类,首先需要在该类属性中定义MemberDao类(该类用于实现与数据库的交互)的对象及int型变量action(根据变量不同,对会员执行的操作不同)。Action实现类的主要方法是execute(),该方法会被自动执行,这个方法本身没有具体的事务,它是根据通过HttpServletRequest的getParameter()方法获取的action参数值执行相应方法的。会员模块的Action实现类如下所示:public class MemberAction extend

37、s Action public MemberDao dao = null;private int action;public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception dao = new MemberDao();this.action = Integer.parseInt(request.getParameter(action);switch (action) case

38、 0: return loadMember(mapping, form, request, response);case 1: return insertMember(mapping, form, request, response);return null;/ 会员登录public ActionForward loadMember(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) String name = request.getParameter(

39、name);MemberForm memberForm = dao.selectMemberForm(name);if (memberForm=null|memberForm.equals() request.setAttribute(result, 不存在此会员,请重新登录!); else if (!memberForm.getPassword().equals(request.getParameter(password).trim() request.setAttribute(result, 密码错误,请重新登录!); else request.setAttribute(memberFor

40、m, memberForm);return mapping.findForward(memberLogin);/ 会员注册public ActionForward insertMember(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) MemberForm memberForm = (MemberForm) form;MemberForm formSelect = dao.selectMemberForm(memberForm.getName();

41、if (formSelect = null) dao.insertMember(memberForm);request.setAttribute(success, 注册成功!); else request.setAttribute(failed, 该会员名称已经存在!);return mapping.findForward(registerMember);3.用户登录及注册界面用户登录成为会员是网上书店中用户进行购物的必要条件。当用户在“用户登录”操作区域中,没有输入用户名和密码时,系统会通过JavaScript进行判断,并给予提示。用户登录模块效果图如下: 图4-5 用户登录模块编写自定义的

42、JavaScript函数,用户判断用户名和密码是否为空。代码如下: function checkEmpty(form) for(i=0;iform.length;i+) if(form.elementsi.value=) alert(表单信息不能为空); return false; function quit() if(confirm(没有要买的东西了吗?) window.location.href=loginOut.jsp; 图4-6 用户注册页面 4.用户登录的MemberDao类的方法在上面用户action实现类中使用了用户登录控制器类MemberDao类的方法selectMemberForm(),在selectMemberForm()中,从数据表membe

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁