基于java的婴儿用品购物网站的设计与实现论文

上传人:r****d 文档编号:88004785 上传时间:2022-05-10 格式:DOC 页数:59 大小:767KB
收藏 版权申诉 举报 下载
基于java的婴儿用品购物网站的设计与实现论文_第1页
第1页 / 共59页
基于java的婴儿用品购物网站的设计与实现论文_第2页
第2页 / 共59页
基于java的婴儿用品购物网站的设计与实现论文_第3页
第3页 / 共59页
资源描述:

《基于java的婴儿用品购物网站的设计与实现论文》由会员分享,可在线阅读,更多相关《基于java的婴儿用品购物网站的设计与实现论文(59页珍藏版)》请在装配图网上搜索。

1、太原理工大学毕业设计(论文)任务书 第1页毕业设计(论文)题目:基于java的婴儿用品购物网站的设计与实现毕业设计(论文)要求及原始数据(资料):1综述国内婴儿用品质量和销售存在的问题;2综述国内婴儿用品的销售现状;3了解基于java的购物网站的代码编写;4设计并实现购物网站的整体框架;5深入分析购物网站中的关键技术与编写语言;6训练检索文献资料和利用文献资料的能力;7训练撰写技术文档与学位论文的能力。 第2页毕业设计(论文)主要内容:1综述购物网站在互联网络中的应用;2了解购物网站的相关技术;3熟悉编写基于java的婴儿用品购物网站的开发环境;4分析编写基于java的婴儿用品购物网站的关键技

2、术;5掌握基于java的婴儿用品购物网站的Java程序编写;6设计与实现针对基于java的婴儿用品购物网站的程序。学生应交出的设计文件(论文):1内容完整、层次清晰、叙述流畅、排版规范的毕业设计论文;2包括毕业设计论文、源程序等内容在内的毕业设计电子文档及其它相关材料。 第3页主要参考文献(资料):1 卜炟. 21天学通JavaWeb开发. 电子工业出版社, 20092 张洪斌. 例解Java Web开发技术精髓 .清华大学出版社, 20083 张玲玲.深入体验Java Web项目开发. 清华大学出版社, 20114 Budi Kurniawan. Servle和JSP学习指南.机械工业出版社

3、,20135 黄彬华.大活Java:从零基础到数据库、Web开发. 科学出版社,北京科海电子出版社,20096 潘浩. ECliPSE 基础与应用. 清华大学出版社,北京交通大学出版社, 20087 梁普选. JAVA程序设计与网络编程. 清华大学出版社,北京交通大学出版社, 20078 Horstmann C.S. core java volume:advanced featuers.人民邮电出版社, 20099 Bryan Basham, Kathy Sierra, Bert Bates. Head First Javascript,OReilly Media, Inc,200810 Br

4、uce Eckel. Thinking In Java.Prentice Hall PTR,2006专业班级学生要求设计(论文)工作起止日期2015年3月23日2015年7月3日指导教师签字日期2015年3月23日教研室主任审查签字日期系主任批准签字日期基于java的婴儿用品购物网站的设计与实现摘要随着计算机硬件的发展和计算机网络的普及,网络的覆盖范围越来越广,网络的功能也越来越大,已经完全深入的大家的生活之中。现实生活中,大家对购物的需求也是十分巨大的,婴儿用品,作为一个庞大而且特殊的购物领域,占据着一个比较重要的地位,因此,结合当今技术以及广大消费者的需求,婴儿用品的网上购物应运而生,利用

5、网络作为交易平台,改变传统的交易方式,使得交易活动不受空间和时间的限制,同时,又降低了交易的成本,并且,商品信息的更新也会更加实时和准确,消费者也可以了解更多的相关消息。婴儿用品网络购物平台的出现,也可以在一定程度上将全世界的婴儿用品集中展现给消费者,是消费者有了更多的选择,也有了一定的安全保障。关键词:计算机硬件;计算机网络;网上购物A design and implementation of Baby products shopping website based on JavaAbstractWith the popularization and development of compu

6、ter network and computer hardware, an increasingly wide range of network coverage, network function is also more and more big, has been completely thorough everyones life. In real life, everyone on the shopping demand is very huge, baby supplies, as a huge and special shopping areas, occupies an imp

7、ortant position, therefore, combined with todays technology and the requirements of consumers, baby products online shopping network as a trading platform emerge as the times require, use, change the traditional the way of trading, making transactions are not limited by space and time, at the same t

8、ime, but also reduce the transaction cost, and updating the information of products, will be more real-time and accurate, consumers can also get more news.Baby supplies network shopping platform, also can in certain level admiral of the world baby activities focused on showing to the consumer is con

9、sumers have more choices, also have a certain degree of security.Key words:Computer hardware;computer network;online shopping目 录1 绪 论1 1.1课题背景1 1.2 系统开发背景12 可行性分析4 2.1技术可行性4 2.2 操作可行性4 2.3 经济可行性43 系统需求分析5 3.1 需求分析目标5 3.2 系统功能需求分析63.2.1 前台功能6 3.3 运行环境7 3.4 安全性74 系统分析与设计8 4.1 系统所需知识与技术84.1.1 Javascrip

10、t84.1.2 Ajax94.1.3 MVC104.1.4 Struts2114.1.5 Hibernate134.1.6 Spring144.1.7 Eclipse开发工具17 4.2 系统功能模块设计18 4.3 系统数据库设计19 4.3.1 数据库表以及相应SQL语句19 4.4 小结235 系统功能模块实现23 5.1 用户模块245.1.1 用户注册245.1.2 用户登录265.1.3 用户退出27 5.2 导航模块275.2.1 显示主导航275.2.2 查询某个主导航下的次级导航28 5.3 商品模块285.3.1 首页热门推荐285.3.2 首页最新商品285.3.3 一级

11、导航下商品展示285.3.4 二级导航下商品展示285.3.5 商品详情29 5.4 购物车模块295.4.1 添加购物车295.4.2 删除购物车项305.4.3 清空购物车31 5.5 订单模块325.5.1 提交订单325.5.2 显示我的订单336 系统功能测试34 6.1 测试方法的选择34 6.2 系统功能测试346.2.1注册模块测试356.2.2登陆模块测试366.2.3购物车模块测试366.2.4订单模块测试36 6.3 系统测试总结37总 结38参考文献39致 谢401 绪 论随着计算机硬件的发展和计算机网络的普及,网络的覆盖范围越来越广,网络的功能也越来越大,已经完全深入

12、的大家的生活之中。现实生活中,大家对购物的需求也是十分巨大的,婴儿用品,作为一个庞大而且特殊的购物领域,占据着一个比较重要的地位,因此,结合当今技术以及广大消费者的需求,婴儿用品的网上购物应运而生,利用网络作为交易平台,改变传统的交易方式,使得交易活动不受空间和时间的限制,同时,又降低了交易的成本,并且,商品信息的更新也会更加实时和准确,消费者也可以了解更多的相关消息。婴儿用品网络购物平台的出现,也可以在一定程度上将全世界的婴儿用品集中展现给消费者,是消费者有了更多的选择,也有了一定的安全保障。1.2 系统开发背景(注:以下内容摘自中国报告大厅婴儿用品行业市场调查分析报告婴儿用品行业前景分析。

13、)据婴儿用品行业市场调查分析报告指出,我国城市新生儿用品的家庭月平均消费达900元。加上广大农村城镇地区婴幼儿的消费,单中国大陆的婴幼儿用品市场每年就有超过1000亿元的市场规模。因此,一些质量良好,口碑上乘的品牌儿童用品的专卖店经营形式,将必然成为未来婴幼儿用品市场的主流消费模式。由此可以看出,婴幼儿商品的市场还是非常之大的。孕婴童市场可细分为孕妇、产妇、婴儿、幼童、小童、中童、大童这些年龄段,这里我们所研究的“孕婴童市场”主要是针对孕产期以及06岁年龄段的婴童消费市场。中国六岁以下儿童约1.71亿,城镇儿童总数约7700万,中国婴儿用品市场深度评估及投资前景预测报告统计显示,儿童用品家庭月

14、消费额九百多元。城镇婴童用品市场年消费总额是690亿。加上农村儿童用品市场及高速发展的孕产妇用品市场,现阶段中国06岁孕婴童产业市场零售总额高达一千亿。按现有的人口推算,中国的最高出生率大约出现在2016年,人口峰值为2028年,该时期我们也将迎来第五轮“婴儿潮”。换言之,中国孕婴童产业尚有二十多年的牛市,市场容量逐步增至25003000亿元的庞然规模。自2000年,孕婴童产业进入快速成长期。同期中国年均GDP增长为9%,而业界普遍认为产业增长率达30%,企业在制定年度指标时,一般都将30%的增幅视为自然增长率,而相当部分的零售企业将下年度营业指标增长率锁定在50%200%。驱动孕婴童市场迅猛

15、发展的便是80后父母的消费进取心。在零售终端与消费群体相互促动下,自2002年起,孕婴童市场格局衍生如下动变。其一,中国范围内,产业资源逐渐向零售商手中集中。自2002年开始,各大城市孕婴童用品专店专营风起云涌,门店越开越大。行业内流行“小城市开大店,大城市多开店”,达成决胜终端的共识,“跑马圈地”盛行一时。零售门店离顾客最近,分享了市场上的“消费权力”,进而获得市场的主导权。其二,各大城市形成“寡头市场”。由二、三家规模较大的零售商共享了50%以上的市场份额,并攫取当地市场定价权,开始挤压弱势厂、商的生存空间。其三,市场进一步细分。03岁婴幼儿市场仍是消费的主力,孕产市场从产品结构到市场零售

16、网点,填补大量空白点;36岁小童市场正逐步明确自身产品定位与专业销售通路。其四,零售业态多元化。在实体门店强势的商境中,虚拟门店如目录销售、网络销售风气已成,不少零售商往往二者并举,相得益彰。实体店铺越加丰富多样,可分为三类:超市型、百货精品型、专卖店型。专卖店型门店多见于服饰类品牌,以业内较知名的厂家品牌为主。百货精品型门店大多面积较大,借鉴了百货商场专柜陈列方式,品牌形象彰显。超市型门店的营业面积多在50200平方米,发展迅速,是主流型态,盈利模式清晰而强势。除此外,尚有大卖场以及新型主题店、概念店。其五,孕婴童用品连锁经营来势汹涌。目前的连锁经营分为二类,一类是厂家品牌加盟店的拓展,二是

17、地区市场零售商的直营连锁店。成长性让人望而生畏,短短四、五年间,孕婴童市场涌现了若干家营业额过亿甚至23亿的零售商。旁观者绝难想象仅在几年之前,她们的年营业额不过几百万元。业内专家指出,婴幼儿市场的高额利润,乃是吸引投资者的主要原因。婴儿用品市场研究及未来发展趋势分析调查显示,我国每年有2000万至2500万婴儿出生,新生儿平均每年消费额在2000至5000元左右,充分显示出这是一个巨大的消费市场。眼见婴儿用品市场存在巨大的消费需求,商家自然不会等闲。一方面,许多大型商场都开辟了婴儿用品专区,产品包罗万象,应有尽有;另一方面,经营婴儿用品的专卖店也开始陆续出现。一些住宅生活区内,现都开有婴儿用

18、品小店,生意同样红火。因此,可以看出,婴儿用品市场蕴藏着巨大的商机。2 可行性分析本系统采用的是JSP、Servlet和Oracle开发,Windows 7操作系统,用html进行前台网页界面设计、结合SSH框架、采用JDBC方式与后台数据库进行连接,完成数据的添加、修改、删除、查询等功能。由于SSH框架灵活易维护在开发方面具有方便快捷、使用灵活的特点,以及目前的广泛实际应用,有如下特点:简单性:在实现平台的功能的同时,尽量让平台操作简单易懂,这对于一个网站来说是比较重要的。 针对性:该平台是网上购物系统及后台管理的定向开发设计,所以具有专业突出和很强的针对性。 实用性:该平台能完成商品展示和

19、管理员管理的基本性质,具有良好的实用性。因此本系统使用SSH框架在技术方面可行。2.2 操作可行性 随着计算机的大量普及,绝大多数家庭都拥有计算机,这也为网购提供了一个便利条件,此系统对计算机要求并不高,几乎所有计算机都可以浏览该网站,因此,操作方面,是可行的。 2.3 经济可行性 根据实际情况,把商品分类,提供商品查找、订单查询、商品管理、订单管理等小模块合成 并构成一个可执行的软件系统模型。使用户快速的搜索和查找到需要的产品和开发人员可以较快的确定需求,然后采用循坏进化的开发方式,对系统模型做连续的精化,将系统需具备的性质 逐渐增加上去,直到所有的性质全部满足。3 系统需求分析3.1 需求

20、分析目标由于是一个购物网站,所以,一定要有一系列的网页来组成网站的界面,以供消费者浏览和挑选商品。结合当前网络上流行的几家电商网站的界面,在分析其所拥有的功能之后,回归到自己的这次设计上,根据自己现有的知识,分析出自己所能完成的几个功能,并尽可能的使用自己学过的内容。我的婴儿用品购物网站主要实现了以下几个内容:首页:在上面显示网站的信息例如:用户的登录,用户的注册,一级导航显示,最新商品及热门推荐等。用户注册:未注册的用户,完成注册功能使用,在注册过程中,需要进行数据的前台非空校验,及使用AJAX完成用户名是否存在的异步校验。在校验通过后即可完成注册。用户登录:已经注册的用户,输入用户名和密码

21、即可登陆。用户的退出:已经登录的用户,退出该网站。 首页展示:显示最新商品及热门推荐。方便用户了解商品动态。分类页面展示(二级导航页面):根据二级导航分类信息去展示商品。可以方便用户查找相应分类商品。商品详情展示:点击某个具体商品的时候,可以显示商品的详情。以便用户可以方便的了解商品的具体信息。购物车:用户可以根据自己需要,将自己喜欢的商品添加到购物车,也可以从购物车中移除商品,甚至清空购物车中的所有商品。订单:登录用户可以将自己喜欢商品进行提交订单操作,则会产生订单。可以根据用户信息,查询自己的订单。验证码功能:这部分内容是大多数网站在注册页面都要用到的内容,因此,我特地从网上查询了验证码的

22、生成代码,并把它用在了我的项目当中,使其发挥了作用。3.2 系统功能需求分析在婴儿用品购物网站中,用户可以实现如下操作:游客,即未登录的用户,可以进行页面的浏览,还有商品的选择,还可以将选中的商品加入购物车。用户可以通过点击注册按钮进入注册界面,在该界面,用户可以根据提示,填入必要信息和选择信息,输入正确的验证码之后,单击注册按钮即可完成注册功能。用户成功注册之后就会转到登陆界面,用户使用自己注册的用户名和密码可以在登陆界面实现登录。用户使用正确的用户名和密码登录之后,会跳转到index即首页的界面,在这个页面中,用户可以看到热门推荐和最新商品的部分展示。用户可以在首页看到主导航,点击主导航中

23、的某一项,可以跳转到对应的商品展示界面,可以缩小用户的挑选商品的范围。用户点击某个商品的图片,则可以进入该商品的详情界面,在详情界面中,用户可以看到该商品的价格,型号,图片,描述等信息。用户在详情页面可以将该商品加入购物车,即可跳转到购物车界面,里面会显示用户添加入购物车的商品内容。用户在确定所要购买的商品之后,则可以在购物车界面点击生成订单,则会跳转到订单界面,并且该页面会显示出改用户下的订单的内容。3.2.1 前台功能前台界面:向用户展示最新商品和热门推荐。注册登录模块:未注册用户通过此界面进行用户注册,需要填写相关的信息,当信息格式正确之后会注册成功,会跳转到登陆界面,可以进行登录。商品

24、列表界面:根据用户对导航的选择,显示符合用户筛选条件的商品的列表。购物车和订单模块:用户可以向中意的商品添加入购物车,在确定了所要购买的内容之后,可以生成订单。3.3 运行环境操作系统:Windows NT/2000/2003/XP professional/Windows 7浏览器:搜狗浏览器,谷歌浏览器,火狐浏览器等主流浏览器均可使用。3.4 安全性后台的界面访问、路径访问、操作执行的前后,均受登陆会话管理和用户权限管理的控制。在用户注册时会动态的检测用户名是否可用,并对注册所需要填的必须信息做了限制,否则不可完成注册。4 系统分析与设计4.1 系统所需知识与技术4.1.1 Javascr

25、iptJavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。以下是他的日常用途:(1)嵌入动态文本于HT

26、ML页面。 (2)对浏览器事件做出响应。(3)读写HTML元素。 (4)在数据被提交到服务器之前验证数据。(5)检测访客的浏览器信息。 (6)控制cookies,包括创建和修改等。(7)基于Node.js技术进行服务器端编程。JavaScript 是世界上最流行的脚本编程语言,主要用于Web开发,也可用于服务器、PC、笔记本电脑、平板电脑和智能 等设备。JavaScript 是一种轻量级的编程语言,可插入 HTML 页面,由浏览器解释并执行。JavaScript是一种弱类型的语言。JavaScript脚本像其他编程语言一样,每个变量都有数据类型,但在声明变量时不需显式地指定其数据类型,变量的数

27、据类型将根据变量的具体内容推导出来,并根据变量内容的改变而自动更改。这是强类型语言无法做到的。JavaScript采用事件驱动方式,能随时响应键盘事件、鼠标事件及浏览器窗口事件等,并执行指定的操作。javascript和java的区别:(1)基于对象和面向对象在js中基本不需要自定义对象,使用js的内置对象就可以完成操作。事件驱动:通过用户某些操作,根据其操作,产生响应。键盘事件:监听键盘的动作,例如点击某些键位、是长按还是敲击等。鼠标事件:监听鼠标的动作,例如鼠标的滑动、单击、双击、拖动等。表单验证、获得焦点、失去焦点等,这些都可用于前端进行表单验证。浏览器事件和相关浏览器的一些操作等等。(

28、2)解释和编译Javascript是一种解释性的编程语言,可以实现动态联编,因此它可以实现边加载、边编译、边执行。而java则需要事先编译。(3)强变量和弱变量变量定义:例如:Integer i = 0;String s = string;var i = 0;var s = string;var b = true;(4)嵌入方式不一样使用如下方式:第一种方式,将js代码写在script标签中,script标签可以出现在head或body的任意位置。;第二种方式,直接写在标签的事件属性中,如:onclick=window.open( :/ baidu );第三种方式,引入外部的js文件,如:4.

29、1.2 AjaxAJAX(Asynchronous Javascript And XML)的中文意思就是“异步Javascript和XML”。意思就是使用Javascript语言与服务器进行异步交互,传输的数据可以为XML(当然,传输的数据不只是XML)。AJAX还有一个最大的特点就是,当服务器响应时,不用刷新整个浏览器页面,而是可以局部刷新。这一特点给用户的感受是在不知不觉中完成请求和响应过程。与服务器异步交互,浏览器页面局部刷新。同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求;异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求。优点:

30、AJAX使用Javascript技术向服务器发送异步请求;AJAX无须刷新整个页面;因为服务器响应内容不再是整个页面,而是页面中的局部,所以AJAX性能高。缺点:AJAX并不适合所有场景,很多时候还是要使用同步交互;AJAX虽然提高了用户体验,但无形中向服务器发送的请求次数增多了,导致服务器压力增大。因为AJAX是在浏览器中使用Javascript技术完成的,所以还需要处理浏览器兼容性问题。使用ajax的步骤:创建XML Request对象;调用open()方法打开与服务器的连接;调用send()方法发送请求;为XML Request对象指定onreadystatechange事件函数,这个函

31、数会在XML Request的1、2、3、4,四种状态时被调用。XML Request对象的5种状态:0:初始化未完成状态,只是创建了XML Request对象,还未调用open()方法;1:请求已开始,open()方法已调用,但还没调用send()方法;2:请求发送完成状态,send()方法已调用;3:开始读取服务器响应;4:读取服务器响应结束。通常我们只关心4状态。4.1.3 MVCMVC即模型视图控制器,是Xerox PARC在八十年代为编程语言Smalltalk80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用Cold

32、Fusion和PHP的开发者的欢迎。软件应用分层架构标准三层架构:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务。业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。具体的讲主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。表示层:主要表示WEB方式,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。主要对用户的请求接受,以及数据的返回,为客户端提供

33、应用程序的访问。优点:开发人员可以只关注整个结构中的其中某一层;可以很容易的用新的实现来替换原有层次的实现;可以降低层与层之间的依赖;有利于标准化;利于各层逻辑的复用;结构更加的明确;在后期维护的时候,极大地降低了维护成本和维护时间缺点:降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成;有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码;增加了开发成本。WEB技术的四层(五层)结构:所谓的四层

34、架构的分法,就是想把软件设计师工作量降下来,减少重复性的代码,提高开发速度,使软件有相当好的可维护、易扩展,这种四层架构对多人开发同软件来说,可以有个清晰的思路。我把系统分成表示层(UI)、业务逻辑层(Bussiness/Service)、数据访问层(DataAccess/Dao)、数据实体层(Domain)。如果你还考虑到数据库设计的话,就是五层架构。4.1.4 Struts2strust2框架来历简介:WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的J2EE Web框架(同时也是一个成熟的基于Web的MVC框架)。MVC:Model View Controll

35、er, model是模型,view是视图,controller是控制器,是一种框架模式。随着WebWork框架的发展,衍生出了strust2框架,因此strust2框架是WebWork的升级,而不是一个全新的框架,因此稳点性、性能等方面都有很好的保证,而且也同时吸收了struts1框架和WebWork俩者的优点。所以strust2框架也是一个基于Web的MVC框架,但是,strust2框架并不是struts1框架的延续或者升级,俩者有着很大的不同。web项目中的三层架构:表示层(Struts2框架就是工作在这个地方);业务逻辑层(service层,处理业务逻辑,比如判断用户名是否存在、密码是否

36、正确、权限是否拥有、账号是否被冻结、账号是否异常、用户积分是否到达操作要求等等,多为一些执行某一个操作条件的判断);数据访问层(dao层,专门处理和数据库进行交换的事情,jdbc/hibernate就在这里使用)。在项目中,这些不同的分层的表现形式,其实就是在我们自己建的不同的package中写上各自分层中所使用的java类。比如在项目中我们建了三个package,三个package中java类的作用分别为表示层的代码、业务逻辑层代码、数据访问层代码。注意:可以理解为,MVC架构是这里说描述的三层架构的一部分,即:三层架构中的表示层可以使用mvc架构的框架来实现,例如使用struts2框架。使

37、用struts2框架的好处:减少编程人员代码的编写,使代码更加简洁明了,缩短开发时间,同时也增加了开发效率。将struts2框架引入到web项目中:首先使用Eclipse/MyEclipse中建一个web项目。把struts2相关jar包引入到项目中。把struts2的配置文件直接放到src下面,名字要叫做struts.xml。(运行时配置文件会被框架自动读取)。如果struts.xml文件中不能自动提示出标签;把相应的dtd文件配置上去。在web.xml文件中配置struts2框架的过滤器。这个过滤器的作用:拦截struts2框架中的action。如果不配置这个filter,struts2框

38、架就不能够工作。第一种filter的配置:struts2框架的2.0版本配置的方式:在标签中添加如下内容:org.apache.FilterDispatcher。第二种filter配置:struts2框架的2.0版本以上配置的方式,同时2.0版本以上的也可以使用第一种方式。这个过滤器类是2.0版本以上新增的类。之后,这一步是可选的,将log4j.properties复制粘贴到src下面。特别注意:项目的环境要求:tomcat所在的路径中要求没有空格、中文、特殊符号。如果有的话启动tomcat时候有可能报错。注意tomcat最好使用tomcat6版本以及JDK。使用JDK6版本的,所建立的web

39、项目版本最好是J2EE5.0(因为在比较新的MyEclipse中允许建立J2EE6.0的版本,但是不要建立J2EE6.0的版本项目)不要使用最新的,新的软件就是会有新的bug,特别是在和其他不是最新版本的软件结合使用的时候struts2框架中的Action:struts2框架中有一种java类叫做Action,这种说法就像J2EE项目中有一种java类加Servlet(人们的生活中有一种人的职业叫警察)。struts2框架底层还是封装了Servlet的相关内容而实现出来的。只不过struts2框架除了servlet的功能以外还扩展出了很多其他的功能,同时还大大简化了以前在servlet中繁琐的

40、操作。在struts2框架中有一种类就是用代替以前我们在web项目中所使用到的servlet,那么这种类,在struts2框架中被称为Action。所以Action其实也是一种java类,比servlet功能更加强大的java类,同时还比servlet中的操作简单。Action会有比servlet强大的功能以及简洁的操作:因为我们在web.xml文件中配置了struts2框架中专门的过滤器,用作拦截访问action的请求,拦截住之后,struts2框架就可以给Action添加很多丰富的功能了。4.1.5 Hibernate hibernate 框架:是对jdbc的轻量级的封装;操作数据库更简单

41、。可以持久化数据对象关系映射:将实体类与数据库表中的字段相对应。假设有一个Car的数据库表,程序中有对应的实体类,则对应关系如下:Car -t_car;id属性 -id列;type属性-type列;price属性-price列。还有如下一些概念:hibernate配置文件;dom4j解析xml配置文件;log4j.jar记录日志;junit.jar单元测试。单元测试注解的使用: Test ;Before ;After。pojo(plain old java object)即简单的java对象;javabean:,即实体类。建立一个hibernate项目的步骤:将hibernate框架所需要的j

42、ar导入,可以在Eclipse中建立hibernate类库;建立包含数据库信息,hibernate信息,日志格式等元数据的配置文件。hibernate.cfg.xml和log4j.properties 默认放在src下;建立实体类(多个属性,每个属性的get/set方法,无参构造器);针对实体类,建立映射文件Xxx.hbm.xml,映射文件放在实体类所在的包中;Hibernate整体工作的流程:get方法 和load方法:load方法查询数据是延时加载的,在查询的对象没有使用之前是不会去数据库查询的。如果对象不存在,那么就报错。get方法立即执行查询语句,如果对象不存在,那么返回null。Se

43、ssionFactory和Session对象:SessionFactory 用来构造Session的实例对象,它的特点:线程安全: 该实例对象何以被多个线程共享;重量级:该实例对象的构造和销毁消耗系统资源,所以一般在应用程序启动的时候就构造实例对象,一般一个数据库对应一个SessionFactory的实例对象,如果要访问多个数据库,就需要创建多个该实例对象。SessionFactory实例对象中维护了一个很大的缓存,存放了一些预定义的SQL语句和XML配置文件的信息,另外还维持了一个Hibernate的第二级缓存(缓存了所有Session对象所加载的POJO对象),用来保存在该生命周期中的一些

44、业务对象,但是这个第二级缓存默认是关闭的,必须在xml中配置才可以开放;Session用来对对象的保存,更新,删除和查询。特点:线程不安全,要避免同一个Session对象被多个线程共享,一般一个线程对应一个Session;轻量级:可以随意的构造和销毁该实例对象;Session对象中维护了一个缓存,称为Hibernate的第一级缓存(缓存了当前Session对象所加载的POJO对象)每个Session对象都有自己的缓存。session对象中的缓存:只要是被session操作过的对象都会被放置在缓存中,save,update,get,load等。flush()方法:清理缓存中的对象并立即执行sql

45、语句,但是不会提交事务;clear()方法:只会将缓存中的对象和sql语句清空,不会提交事务。close()方法:将缓存中的对象和sql语句都清空,只会回滚事务。commit()方法:执行缓存中的sql语句,但是不会清理缓存中的对象,再提交事务。saveOrupdate:merge()方法:先通过select查询对象,如果对象不存在,那么执行insert如果存在执行update。如果在session中存在俩个主键相同但内存地址不同的对象时,saveorUpdate在操作时会报错,merge会将两个对象合并。getCurrentSession()方法:使用此方法必须在配置文件中添加下面的属性:t

46、hread。在第一次调用getCurrentSession方时,会创建一个新的session对象并放在线程中维护,只要session不关闭,那么再调用getCurrentSession方法时,会返回同一个session对象。openSession():不管前面有没有存在session,openSession方法都会创建一个新的session对象。主键的增长策略:。assigned表示id的设置是由用户设置的 这个是默认值increment 每次表中的ID最大值加1;sequence表示id值由数据库中一个序列负责生成是oracle数据库特有的主键增长策略,默认是一种叫hibernate_seq

47、uence的序列。identity是mysql SQLServer等数据库中的id增长策略,oracle不支持。native 让本地数据库来选择使用哪一种主键增长策略。orale数据库默认选择sequence增长策略,使用hibernate_sequence。Hilo,使用hilo算法(高位数字结合低位数字)生成id的值。高位的值在数据库的表中存放。4.1.6 SpringSpring相关概念轻量级的容器:容器:spring容器帮我们管理业务逻辑层,里边有很多业务逻辑对象,有对象就有对象的生命周期的管理(创建,销毁)。轻量级:容器给予的业务逻辑对象多少种服务?spring给用户提供的服务完全有

48、用户自己决定,spring想用什么服务自己开启使用。但是重量级的都是只要你用就把所有的服务都给你,不能自己定制。spring容器从来不能独立运行,一定借助于其他容器启动,或者借助web容器启动,或者EJB容器启动。特点:应用模块之间耦合度小,组件都是可重用的,都是各自打包的。为什么要用Spring:(1)动态解藕,方便开发,面向接口设计:通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。(2)方便程序的测试TDD(Te

49、st-Driven Development):可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。(3)降低Java EE API的使用难度:Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个简单的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。(4)方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)

50、等的直接支持。(5)AOP编程的支持:通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。(6)声明式事务的支持:在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。(7)对异常的处理方式,所有的都转换成Unchecked的。(8)它不是一个一体化的解决方案。(9)良好的设计,容易扩展,很多可重用的组件Spring核心组件:(1)、Spring Core(IOC) 核心容器,提供组件的创建、装备、销毁。(2)、Spring Context Spring上下文,是一个接

51、口ApplicationContext(继承自BeanFactory接口)的实现。(3)、Spring Web容器,web应用上下文,是webApplicationContext接口的实现。(4)、SpringDAO容器,是SpringDAO 支持模块,是为了简化DAO的使用。(5)、SpringORM 。(6)、Spring AOP 对AOP编程支持的模块。(7)、Spring MVC,类似于Spring表示层的一个框架spring ioc:IOC:Inversion of Control 控制反转。一种说法:对象之间的依赖关系,由容器在运行时依据配置文件动态的建立。另一种说法:对象的控制器

52、转移了,转到外部容器了,避免了代码的纠缠,代码更容易被维护,模板之间的耦合性降低,容易测试。IoC 控制反转意味着将你设计好的类交给容器去控制,而不是在类的内部进行控制,即控制权由应用代码中转到了外部容器。IoC:包括两部分内容:DI:Dependency Injection依赖注入,组件不做定位查询,只提供相应方法,由容器创建对象,并调用相应方法设置所需对象需要的组件。DL:Dependency Lookup依赖查找,容器创建对象并提供回调接口和上下文环境给组件,需要时通过接口从容器中查找对象。依赖查找,现在使用不太多(EJB使用的更多,将对象创建好后,放到容器中)。IOC解决:对象谁来创建

53、的问题。DI解决:对象间的关系如何建立的问题。org.springframework.beans及org.springframework.context包是IOC容器的基础。配置文件:配置Spring通过读取配置元数据来对应用中各个对象进行实例化,配置以及组装,通常使用XML文件来作为配置元数据的描述格式,可以将XML配置分别写在多个文件中。IOC注入:setter方式(必须依靠无参构造器)A、基本类型(8中基本类型+字符串)的装配;B、对象类型的装配;C、集合的装配。基本类型的装配:注意: 用setter方式注入的话,必须要用set、get方法。方式: 配置元素。对象类型的装配: ,使用pr

54、operty的ref属性引用。集合的装配:方式:配置元素,基于构造器:方式: 配置元素;在Bean中不用写set方法,但是要有相应的构造器。自动装配:容器依照一些规则去装配bean中的一个属性。在beans标签中配置装载方式:default-autowire=byName或者在bean标签中指定配置方式a,autowire=byName:spring容器会到当前的类中找property的名字,然后再根据这个名字去spring容器中找有没有和这个property名字相同的对象,有的话,就把这个对象当做参数放到setXxxx这个方法里面注入进来。代理模式:代理模式是常用的Java 设计模式,它的特

55、征是代理类与委托类有同样的接口。代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类可分为两种。静态代理类:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理类:在程序运行时,运用反射机制动态创建而成。Spring 实现AOP是依赖JDK动态代理和CGLIB代理实现的。以下是JDK动态代理和CGLIB代理简单介

56、绍: JDK动态代理:其代理对象必须是某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理。 CGLIB代理:实现原理类似于JDK动态代理,只是它在运行期间生成的代理对象是针对目标类扩展的子类。CGLIB是高效的代码生成包,底层是依靠ASM(开源的java字节码编辑类库)操作字节码实现的。如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP。如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换。AutoProxy:使用自动代理的时候需要注意的方面:当前的配置里面一定要有一个advisor的配置;不需要向自

57、动代理类中注入任何信息;不管目标对象是否实现了一个或多接口,自动代理的方式都能够为它产生代理对象;如果目标对象是没有实现接口的类,那么将自动使用CGlib代理对象;从spring容器中拿代理对象的时候,需要通过目标对象的名字来拿。即根据其name来拿。AutoProxyByName:使用自动代理byName的方式的时候需要注意的方面:当前的配置里有没有advisor的配置都可以;需要向自动代理类中注入目标对象的名字和advisor或者advice;不管目标对象是否实现了一个或多接口,自动代理的方式都能够为它产生代理对象;如果目标对象是没有实现接口的类,那么将自动使用CGlib代理对象;从spr

58、ing容器中拿代理对象的时候,需要通过目标对象的名字来拿。4.1.7 Eclipse开发工具Eclipse 最初由OTI与IBM两家公司的IDE产品开发组创建,开始于1999年4月。IBM公司提供了最初的Eclipse代码基础,包括PDE、JDT 与Platform。Eclipse项目IBM发起,现如今围绕着Eclipse项目已经发展出了一个庞大的Eclipse联盟,全球一共有150多家软件公司具体参与到Eclipse项目中,其中不乏有Rational Software、Borland、Red Hat等知名业界公司。Eclipse作为一个开放源码的开发工具,它实际上是Visual Age fo

59、r Java的替代品,它们的界面并无太大差异,但由于Eclipse开放源码,所有人都可以免费得到并使用,并可以在此基础上根据自己的喜好特点开发出各种各样的插件,所以越来越受到人们的关注。随后还有像Oracle这样的大公司也纷纷加入了该项目,Eclipse一直朝着能够进行各种程序开发语言的IDE集成而大步向前,开发人员只需通过下个相应语言插件就能够使用。Eclipse 作为一个软件开发平台,它虽然是基于 Java 程序语言开发而成的,但同时也是可扩展、免费的和开放源代码的软件开发工具。简单来说,Eclipse 只是一个软件包,由一个框架与一些提供插件使用接口而组成的一个程序包,它能够被用来与提供

60、不同功能的开发插件共同搭建开发环境。Eclipse的功能目前并不完善,但是它附带了一个标准的插件集来解决这个问题,比如JDT。 Eclipse 还提供了一套插件开发环境PDE,可以使软件开发人员进行自定义。4.2 系统功能模块设计在本婴儿用品购物网站中,结合目前市面上所使用的电商网站的相关功能,以及自己毕业设计中所需要实现的功能,我将我的婴儿用品购物网站从总体上分为了一下几个功能模块:用户模块、导航模块、商品模块、购物车模块、订单模块。用户模块中,包含用户的登录与注册,即注册和登录功能的实现,以及相关数据库表的建立和维护,此模块之中涉及到的数据库表是用户表。导航模块中,主要是用于导航的动态显示

61、,以及相应的页面跳转。涉及到的数据库表包括主导航表和次导航表。商品模块中,主要是要实现商品的展示,因此,在涉及到的商品表中,要关联到相应的次导航表,而次导航表要与主导航表关联,这样才能级联查询。购物车模块中,主要是在商品的详情页面中,点击计入购物车按钮后可以进入购物车详情页面,看到自己所加入购物车的商品。订单模块中,主要是实现用户下订单的功能,在订单中可以显示用户所下的订单内容,并且可以查询我的订单。系统总体的功能模块图如下:图4-1系统功能模块在整个系统中间,主要的结构性的功能模块如上所示,在下一章节,我会针对每一个模块的需求和操作做进一步的研究。模块之间并非完全独立,各模块之间还是有一定联系的,如图中所示的那样,各模块整合到一起,才能共同实现婴儿用品购物网站这个系统的整体功能。4.3 系统数据库设计4.3.1 数据库表以及相应SQL语句参考一般的购物网站的结构,以及学习中所练习项目的数据库表结构的设计,结合我具体的前端页面的功能,我将此婴儿用品的数据库表分为以下几个部分:1. 用户表(user)用来记录用户的相关信息,主要服务于登陆,以及生成订单。表中包括用户id、用户名、用户密码、用户真实姓名、用户邮箱地址、用户 、用户收件地址信息,其中id是主键。具体内容如下:表4-1 用户信息表字段名称数据类型说明是否为空备注

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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