JAVA EE架构与应用课程设计
检査用户名是否已存在的方法:
当申请一个新用户名时,需要判断这个用户名是否已经存在,下面通过这个检查用户名是否存在的方法,使用getHibernateTemplate()方法中find0方法的用法检査用户名是否存在。
使用Hibernate查询语句需要把参数数值直接连接到查询语句中,然后,调用getHibernateTemplate()方法中的find()方法来执行该查询语句
5.3产品显示模块
在使用Struts2框架设计时,需要在Action中获取数据信息,然后将信息传速到页面。在 Action文件中获取数据,并以某种形式保存气力啊,比如保存在request对象中, 然后在 JSp页面中访间该 Actioa 文件, 通过request对象获取这些信息。 这样,当访问 JSP页面时, JSP 页面会访同Actiom 文件并获取数据信息,然后使用Struts2标签显示数据
5.3.1获取畅销产品信息Action
下面以本电子商务系统首页中显示的销量持行榜为例。 在这个销量排行榜中显示了销量大于 0且销量排行榜前10位的商品.
在src/com,huizhi.action;文件夹下新建Action文件LeftAction.java代码如下:
Package com.huizhi.action;
Import Javax.servlet.help.HttpServletRequest; Public class LeftAction extends ActionSupport{ Private ProductManage productmanage;
20
JAVA EE架构与应用课程设计
}
在上述 Action文件中,首先使用setXXX()方法获取ProductManage类的实例化对象 productManage.XML文件的相关配置内容。然后, 同样在该 Action中实现excute0方法,在execute()的方法中,通过productManage对象调用bestSe11ingProduct0方法,来获取销量排名前十位的产品信息,保存在List集合中。获取request对象, 将该集合保存到request 对象中,由于这里不需要该 Action做任何跳转,所以让execute0方法返回 nu11 值.
5.4 购物车模块
在前面分析中已经介绍了购物车的重要性,以及主要功能。很多网上购物系统的购物车都是采用Cookie实现的运用Cookie有其优点和缺点,其优点是:购物车有效期长,不受会话控制等。期缺点是: Cookie购物车的实现有局限性,原因是很多网页浏览器都不支持 Cookie,或者被用户自己设置成不支持 Cookie,而且Cookie保存数据本身就存在安全问题,先对 Cookie来讲, Session在安全方面有保障,但有效期短,而且受会话控制.上面所提到的两种实现放置各有优势,这里不做过多比较,本电子商务系统采用 session来实現购物车效果
5.4.1 购物车Action
用户选择将商品放入购物车时,页面将商品 ID传给购物车
Action。在Action 中获取商品ID所表示的商品实体对象,并存放到一个List集合中.最后将这个集合保存到session对象中.
在 Action文件中, 首先获取request 对象, 在通过request 对象获取session对象,调用request对象的 getParameter方法获取员面中传过来的商品 ID创建一个商品List集合,判断是否已经创建购物车session对象,如果没有创建,则格新建的商晶 List 集合存放到购物车session种,如果已经创建,则将购物率session中保存的信息赋值给该 List,接着判断用户想要放入购物车的商品是否已经在购物车中,如果在,则直接跳转回原界面,如果不在,通过
productManage对象调用findProduct()方法来获取商品 iD所对画的商品对象,设置该商品对象的购买数量默认为1 (用户可以在购物车中修改器的买数量)。接下来判断该商品是否为特价,如果是,将商品价格设为特价价格,然后将商品对象放入List集合中,并修改购物车session信息。为了在页面中显示金额,在Action中另外创建一个名为totalMoney的session来保存购物车中商品总金额,最后跳转到原界面。
21
JAVA EE架构与应用课程设计
5.4.2购物车页面
在商品显示模块中已经介绍看如何在页面中获取并输出request对象中保存的信息。现在通过能车页面来介绍如何获取并输出session対象中保存的信息。在WebRoot文件夹下新建 JSP文件 shoppingCart.jsp
在上述 JSP文件中, 同样用
5.4.3提交购物车Action
用户单击【确定购买】按钮,将调用JavaScript代码中的addOrer()函数,该方法的内容代码如下所示
确定购买函数: assOrders()
Function addorders()
If(confirm(“你确定要购买吗?”)){
Location.href=”com.huizhi.action/ordersManageAction.action?updateType=add”;
} }
代码中的0rdersManageAction,他是在Struts.xml文件中为OrdersManageAction.java文件配置一个name值, XML 文件的相关的配置可参考前面的内容。而action则是 Action文件名的后缀。因为在0rdersManageAaion.java 中,需要进行的订单操作不知是添加订单,所以在这里添加一个参数UpdateType, 并将其属性设置为add,通知0rdersManageAction.java文件要做的订单操作是添加新订单.
获取updateType参数值,判断需要进行那种订单操作。如果参数值为add,则为添加订単,然后获取购物车中的商品合集、购物车总金额和登录用户。实例化一个0rders对象orders,为该ordefs对象设置为默认字符串0,即未处理,其totalMoney值为购物车总金额,最后为订単生成一个编号,生成编号的方式再去的是时向字符串加随机数的形式。
通过ordersMmage对象调用 addOrders0方法,向数据库中添加该订单后,返回该订单ID,进行下一步操作,也就是向订单商品表中添加数据。最后要清除购物车session和总金额session,返回逻辑视图
22
JAVA EE架构与应用课程设计
字符串 SUCCESS。
5.5购物拦截器
有些购物网站在用户将物品放入购物车时,会提示用户需要先登录:也有很多购物网站时在用户提交购物车准各订购时提示用户需要先登录的。 这两种情况没有很大的区别,本网上书店选取前一种方式。
当用户想要将商品放入购物车时,判断用户是否已登录,如果投有登录,网页跳转到登陆员面。实现这种效果的方式很多, 比如在ShoppingCartAction.java中进行判断处理.这里选择使用拦裁起来实现这种效果,在实現过程中介绍整截器的使用方法回。
上述文件中, UserLoginCheck类继承了抽象控制器类 AbstractInterceptor,,并实现了该类的ntercept()方法。在
intercept()方法中,先获取MAP 类型的 HttPSessioa 对象session,通过名为1oginUser 的Session来获取用户登录信息.如果已经登陆, 则调用ActionInvocation,的invoke0方法,格控制权交给下一个拦截器,或者交给Action中的execute()方法,实际上也就是说本次拦截通过,程序正常进行。反正则返回逻辑视图字符串login,该字符串对应逻辑视图为 Iogin.jsp的页面,这需要在struts.xml 文件中进行配置,再返回逻辑视图字符串login,也可以采用. 另一种形式return ActioLOGIN两种写法的效果一样.
response对象,然后通过requset 对象来获取session对象例。通过session对象来检査是否有管理员登录信息,如果有管理员登录信息,则执行其他过滤器(即此次过滤通过),如果没有其他过滤器,将允许请求页面被访问。反之,则将页面跳转到管理员登录页面。
5.5.1处理订单
管理员可以査看所有订単信息,也可以处理订単中的未处理订単。线面通过修改订単状态来说明实体对相当修改方法。在webroot/manage文件央下新建JSP 文件manageAllOrder.jsp
获取超链接中传过来的ordeId值,通过该使来获取相应的order 实体对象,因为修改订単状态只有一种情况,即将未处理改为已处理, 所以这里将或等的Orders实体对象的 isDeal 属性值设置wie字特串 l.最后调用orderManage 对象的updateOrders()方法来修改该0rders实体对象。
修改Order实体对象,只需要将修改属性值后的Orders 实体对象作为参数传到updateOrders()方法中,然后在 updadeOrders
23
JAVA EE架构与应用课程设计
()方法中调用 gethilbernateTemplate()方法中的 update()方法, 对该对象进行修改。
5.5.2添加商品
添加商品和注册一个新用户在处理上没有大的区别, 大致处理过程可以参考用户注册模块,通过添加商品模块中的照片上传来介绍如何实现文件上传。
涉及到文件上传,需要修改 form表单的enctype 属性,该属性用来指定表单数据的编码Application/x-www_foem_urlenooded 如果指定该值,则表单中的数据被编码为 key-value对,即默认的编码方式。 multipart/form-data即使用mine编码, 会以二进制流的方式来处理表单数据,文件上传需要使用该编码方式.text/plain表単数据以纯文本形式进行编码, 其中不包含任何控件或格式字符. 所以这里将表単提交数据格式设置为 multipart/form=date。 Struts2 框架提供了文件上传标签
定义变量boc的类型为 File类型,同时定义两个非常重要的属性; fileName和contentType,这三个属性封装了文件上传的相关信息同。 File类型的 doc 属性封装了该文件域对应的文件内
容;String 类型的fileName属性封装了该文件对应的文件名称;
String 类型的contentTyep 属性封装了该文件域对应的文件类型。
第 6 章 总结与展望
随着 web应用技术的快速发展,越来越多的 web应用采用轻量级集成框架来进行架构,由代码的可重用度低及维护任务繁重,不易扩展性,难以兼容问题使开发人员开发起来变得复杂繁琐,未解决这一同題,能够快捷、高效、稳定的进行个开发,人们开始对软件开发框架进行设计开发,本文就是针对解决这一问题进行探讨研究,通过 J2EE多层架构,按照分层原理,把Web应用系统分层逐级开发。层次分为web表现层、业务逻辑层、数据持久层和域模型层。 Strusts2是基于Mvc框架的代表框架,更好的的解决了 web表现层的交互问题, Spring应用于业务逻辑层开发, Hibernate 为持久层提供了完美的方案,最后flex 框架改变了 web 界面交互的缺陷,由此提高了了客户体验。由不同的框架组成,形成了一种框架集成模式。适时适应了当前对软件开发的高要求.本文通过分析JavaEE框架及Mve 模式,研究 Strusts2、 Spring、Hibernate三种框架的集成以及加入FLEX框架, 最终形成了一个相对集成的 ssH2+FLEX 架构, 并结合“淘宝
24
JAVA EE架构与应用课程设计
2“电子商城項目的开发,搭建了Strust2 和 ftex 为 Web表现层框架,Spring做业务逻辑层处理, Hibernate完成持久层操作。通过研究分层处理,系统结构变得清晰、明确,层次之得相对独立,针对某一层不会干扰其他层.最终通过此集成框架,达到了低耦合高重用的效果。
通过本论文,深入研究了JavaEE架构技术,并提出了集成
Struts2,Spring和 Hibernate 的架构设计方案,以及引入flex技术,通过“淘宝2” 电子商务系统目予以验证,形成了 ssH2+ftex的web架构模式,并在某些方面有所创新,延伸出一些新的特性,为实现高效、灵活的多层Web体系结构的应用提供一种新的思路及方案。
参考文献
[1] 何成万,余秋惠.MVC模式2及软件框架 Struts 的研究[J].计算机工程, 2002.
[2] 马树奇译.J2EE编程指南M].北京:电子工业出版社, 2002. [3] 蒲子明,许勇,王黎.SSH整合开发技术详解[M].北京: 清华大学出版社, 2010.
[4] 李刚. Struts2权成指南一基于 Webwork核心的 MVC开发[M].北京:电子工业出版社, 20079.
[5] 宋彦儒,周翔.基于StrutsZ框架的可eb系统安全模型分析[M].南昌:中国学术期刊电子出版室, 2009.
25
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于SSH2架构的电子商务系统(5)在线全文阅读。
相关推荐: