基于SSI框架的电子商务信息平台的研究和构建设计的开发与实现_第1页
基于SSI框架的电子商务信息平台的研究和构建设计的开发与实现_第2页
基于SSI框架的电子商务信息平台的研究和构建设计的开发与实现_第3页
基于SSI框架的电子商务信息平台的研究和构建设计的开发与实现_第4页
基于SSI框架的电子商务信息平台的研究和构建设计的开发与实现_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XXXXXX大学毕业论文(设计)题 目 基于SSI框架的电子商务信息平台的研究和构建 工商 学 院 XXX 专 业 08 级 2 班学生姓名 XXX 学 号 指导教师 XXX 职 称 完成日期 2011-11-30 教务处 制基于SSI框架的电子商务信息平台的研究和构建【摘 要】近年来,在网络技术的迅速发展和J2EE平台被广泛采用的背景下,基于多层B/S结构的Web体系结构逐渐发展并成为主流。但是,在多层Web体系结构的设计中,普遍存在着程序可重用度低、功能模块可扩展性差、维护工作繁琐及开发中分工协作困难等问题。设计一个松耦合和紧内聚的系统一直是软件工程领域重点研究的问题。本系统基于Sprin

2、g+Struts+iBATIS(简称SSI)轻量级复合型框架,很好的解决了上述问题,同时解决了视图层、业务层和控制层的分离,提供了对象到关系数据库的持久化支持。本文将研究整合Spring、Struts和iBATIS,并在电子商务信息平台中进行应用。【关键词】Spring Struts iBATIS Ajax 电子商务信息平台 目录 TOC o 1-3 h z u HYPERLINK l _Toc307162492 引言 PAGEREF _Toc307162492 h 3 HYPERLINK l _Toc307162493 第一章 系统实现原理 PAGEREF _Toc307162493 h 3

3、 HYPERLINK l _Toc307162494 1.1表示层框架 PAGEREF _Toc307162494 h 3 HYPERLINK l _Toc307162495 1.2业务层框架 PAGEREF _Toc307162495 h 3 HYPERLINK l _Toc307162496 1.3持久层框架 PAGEREF _Toc307162496 h 3 HYPERLINK l _Toc307162497 1.4集成三种框架技术 PAGEREF _Toc307162497 h 3 HYPERLINK l _Toc307162498 客户层 PAGEREF _Toc307162498

4、h 4 HYPERLINK l _Toc307162499 表示层 PAGEREF _Toc307162499 h 4 HYPERLINK l _Toc307162500 业务层 PAGEREF _Toc307162500 h 4 HYPERLINK l _Toc307162501 持久层 PAGEREF _Toc307162501 h 4 HYPERLINK l _Toc307162502 第二章 电子商务信息平台的设计 PAGEREF _Toc307162502 h 5 HYPERLINK l _Toc307162503 2.1系统平台定位 PAGEREF _Toc307162503 h

5、5 HYPERLINK l _Toc307162504 2.2用户管理系统 PAGEREF _Toc307162504 h 5 HYPERLINK l _Toc307162505 2.3信息显示系统 PAGEREF _Toc307162505 h 6 HYPERLINK l _Toc307162506 2.4信息发布系统 PAGEREF _Toc307162506 h 6 HYPERLINK l _Toc307162507 2.5信息查询系统 PAGEREF _Toc307162507 h 6 HYPERLINK l _Toc307162508 第三章 系统代码实现 PAGEREF _Toc3

6、07162508 h 6 HYPERLINK l _Toc307162509 3.1 整合项目开发基本框架 PAGEREF _Toc307162509 h 6 HYPERLINK l _Toc307162510 3.1.1 准备工作 PAGEREF _Toc307162510 h 6 HYPERLINK l _Toc307162511 3.1.2 向项目中加入Spring框架 PAGEREF _Toc307162511 h 6 HYPERLINK l _Toc307162512 3.1.3 向项目中加入Struts框架 PAGEREF _Toc307162512 h 7 HYPERLINK l

7、 _Toc307162513 3.1.4 配置数据源 PAGEREF _Toc307162513 h 8 HYPERLINK l _Toc307162514 3.1.5 为项目配置Spring事务管理 PAGEREF _Toc307162514 h 9 HYPERLINK l _Toc307162515 3.1.6 配置项目定时器 PAGEREF _Toc307162515 h 9 HYPERLINK l _Toc307162516 3.1.7 向项目中加入iBATIS框架 PAGEREF _Toc307162516 h 10 HYPERLINK l _Toc307162517 3.1.8 向

8、项目中加入AJAX框架 PAGEREF _Toc307162517 h 12 HYPERLINK l _Toc307162518 3.1.9 向项目中加入URL重写框架 PAGEREF _Toc307162518 h 15 HYPERLINK l _Toc307162519 3.2 具体代码实现 PAGEREF _Toc307162519 h 15 HYPERLINK l _Toc307162520 持久层实现 PAGEREF _Toc307162520 h 16 HYPERLINK l _Toc307162521 3.2.2 业务逻辑层的实现 PAGEREF _Toc307162521 h

9、22 HYPERLINK l _Toc307162522 控制层实现 PAGEREF _Toc307162522 h 24 HYPERLINK l _Toc307162523 展示层页面实现 PAGEREF _Toc307162523 h 26 HYPERLINK l _Toc307162524 平台页面展示 PAGEREF _Toc307162524 h 37 HYPERLINK l _Toc307162525 第四章 总结 PAGEREF _Toc307162525 h 43 HYPERLINK l _Toc307162526 参考文献 PAGEREF _Toc307162526 h 43

10、引言 伴随着我国网络互联的普遍推广,拥有终端PC机的人数正在大幅增加,进行网络购物和电子支付的人数也必将会越来越多, 电子商务占有的市场份额也必会增加, 也将会出现更多的电子商务网站。但是,众多中小企业还有相当部分由于各因素的制约而没有开展电子商务, 这就造成了这些中小企业在面对竞争国际化、 炽热化的今天很容易处于劣势, 这是我国中小企业亟待解决的问题。作为企业的对外沟通的平台,电子商务信息平台可以巩固和树立企业形象,成为产品品牌宣传和业务推广的有力渠道,是与经销商或合作伙伴之间沟通、业务合作往来的主要纽带,节省了企业成本,提高了效率。因此,对电子商务信息平台的研究和构建有极其重要的意义。第一

11、章 系统实现原理1.1表示层框架表现层框架主要有 Struts和 Tapestry。Struts框架在创建W eb应用时能容易地分离表示层和业务层, 它是在 J SP M ode l 2的基础上实现的一个 MVC框架。 Struts框架主要由模型、 视图、控制器三部分组成, 模型由实现业务逻辑的 JavaBean或 E J B组件构成, 控制器由 ActionSe rv l e t和 Action实现,视图由一组 JSP文件构成。Tapestry与 Struts应用框架不同的是,它是基于组件,而不是面向脚本语言 (比如 JSP和 Ve locity)的,组件是由一个定义文件 (以 XML的格式

12、 )、 一个 HTML模板、 一个 JAVA 类构成的。Tapestry的组件可以被套嵌并包裹其它组件,因此可以组合形成一个更大的组件或逻辑页面。组件的行为模式为W eb页面编程提供了很大的方便,事件处理也方便很多。 S truts框架由于出现时间早,所以使用相对广泛,它的社区非常活跃,很容易找到很多现成的开源功能标签以供使用以及样例程序可供参考,而且运行比较稳定,因此本文表示层采用 S truts框架。1.2业务层框架业务组件层轻量级解决方案主要包括 Spring、H ivemind等。但是目前使用最为广泛的还是 Spring框架,Spring框架是一个基于IoC和AOP(面向方面编程 )的

13、构架。采用 IoC使得它可以很容易地实现 bean的装配,提供了简洁的 AOP并据此实现事务管理等,但是它不具备处理应用分布式的能力。 Spr i ng的核心要点是: 支持不绑定到特定 J 2EE服务的可重用业务和数据访问对象。这样的对象可以在不同 J 2EE环境 (Web或EJB)、独立应用程序、 测试环境之间重用。1.3持久层框架持久层框主要有 H i bernate和各种JDO产品,以及 i BATIS 。Hibernate是一个开源的O /RMappi ng框架,它对 JDBC进行了非常轻量级的对象封装,可以应用在任何使用 JDBC的场合,可以在应用 EJB的J2EE框架中取代CMP

14、,完成数据持久化的重任 iBATIS是一个简易的SQLMap工具,它是将手工编写的在xm l配置文件中的 SQL语句映射成 Java对象。使用 i BAT IS提供的 O /R M appi ng机制,对业务逻辑实现人员而言,面对的是纯粹的 Java对象,这一层与通过 H i bernate实现O /R M app i ng而言基本一致,而对于具体的数据操作,H i bernate会自动生成 SQL语句,而 iBATIS则要求开发者编写具体的SQL语句。相对 H iberna te等全自动O /R M appi ng机制而言,i BATIS以SQL开发的工作量和数据库移植性上的让步,为系统设计

15、提供了更大的自由空间。本文采用 i BATIS作为持久层框架,充分发挥其自由灵活的特点。1.4集成三种框架技术将S truts框架,Spri ng框架和i BATIS框架集成在一起,实现无缝连接,可达到提高软件开发效率的目的。集成后的框架分为五个逻辑层,自顶向下依次是客户层、 表示层、 业务层、 持久层、 数据源层,图 1为五个逻辑层的分布情况以及三个框架分别所居的层次。图 1 整合后的分层结构图客户层 该层完成与用户的交互功能,负责传送客户请求,接收系统响应,显示处理结果。主要由 HTML代码、JSP代码和标签组成,属应用系统的前端界面部分。表示层 该层主要负责处理用户请求,并将请求信息发送

16、到业务层进行处理,业务层处理完之后,将处理结果返回到客户层,基于 MVC模式的 S truts框架工作在表示层,它还负责处理应用程序的异常以及对提交的表单进行数据校验。业务层 该层负责处理用户请求的业务逻辑。业务层采用轻量级容器 Spring IoC,它通过配置 XML文件进行各层间的交互,为表示层提供业务模型组件。业务模型组件通过调用持久层 DAO 操纵数据库,完成业务逻辑。 IoC还提供事务处理、 缓冲池等容器组件,提升系统性能,保证数据完整性。持久层 该层主要实现对数据库的操作。 i BAT IS框架工作在持久层,i BAT IS DAO 通过调用 SQLM ap ,完成对数据库的操作,

17、实现业务层的调用。 i BAT IS SQLM ap使用 X M L描述符将JavaBeans等映射到 SQL语句,通过 JDBC实现与底层关系数据库的交互。数据源层 由关系型数据库系统 (如: SQL Serve r ,Oracle等 )构成数据源层。集成后的框架具备了三种框架的技术优势,将 Struts的MVC机制,Spr i ng的控制反转机制,以及 i BATIS的 SQL M ap映射机制融合在一起。集成框架在 W eb应用程序开发中的优势主要体现在:(1) Struts框架的 MVC模式将表现逻辑和业务逻辑分离,摆脱了原有模式的高耦合性,提高了开发效率。(2) Spring框架提供

18、了轻量级的管理业务组件的 IoC容器。实现了对 EJB技术的替代和更好的组件重用性,降低对象之间的依赖,使得程序的调试修改更为简单。(3) i BATIS框架实现了 DAO 和 SQL M ap的分离,使系统的设计更清晰、 更易维护、 更易单元测试。而且通过灵活使用SQL语句基本上可以实现不使用数据访问框架能够实现的所有功能,甚至更多。(4) 三框架的融合大大减少了软件开发的代码量,降低了各模块间的耦合度,使得程序更易调试、 修改与维护,提高了工作效率。(5) 三框架都是开源项目,可以免费获取,不需要 E J B服务器,应用程序部署在 WEB服务器上,节省开支、 降低了开发成本。第二章 电子商

19、务信息平台的设计2.1系统平台定位作为电子商务信息平台,目的是为IT行业的用户提供最快最新的IT行业的信息、提供便利的在线服务,使企业的利益最大化。为会员单位和其他企事业单位提供IT各行业国内外新技术、新产品、先进管理经验和市场信息;为企业提供国际交流、贸易洽谈、市场开拓机会;开展营销活动,定期举办展销会等贸易促进活动,发布各种信息,提供相关服务。此平台将充分利用计算机联网改变了传统的信息传递方式,提供了快速获取最新信息的手段这一优势,及时发布IT行业实时动态信息,为用户提供全方位的行业信息服务。电子商务信息平台可以巩固和树立企业形象,成为产品品牌宣传和业务推广的有力渠道,是与消费者之间交流的

20、重要渠道,是与经销商或合作伙伴之间沟通、业务合作往来的主要纽带,节省了企业成本,提高了效率,而且也为用户节约了时间。2.2用户管理系统作为电子商务信息的展现平台,所以有必要对用户进行会员与非会员的区分,给会员赋予特殊权限,可以使用具有商业机密的信息,而非会员则只能浏览一些大众性的信息。用户管理系统的主要功能是管理和维护会员和非会员的权限和信息。(1)在Mysql上创建本电子商务平台的数据库(2)建用户的档案信息表(3)设置与用户信息相关的字段。(4)设计用户界面。为了方便新用户注册,老用户及时登录,我们将用户管理模块放在了首页的最醒目的位置主页的右上方。这个模块主要包括四个内容:新用户注册、用

21、户登录、用户修改密码以及用户忘记密码的处理。 a新用户注册。当用户填写好自己的会员信息并提交后,我们设计了一个用于处理会员信息的在后台服务器端运行的程序,用于将会员所提交的信息实时的写入数据库中。 b会员身份确认模块。用户提交了注册信息后,我们要为系统管理员设计一个查阅用户信息和确认会员身份的系统,这就是会员身份确认模块。 c忘记密码处理模块。用户在注册时需要提交密码提示问题与答案,如果用户忘记了密码,但没有忘记密码提示问题的答案,那么我们可以设计出一个让用户通过回答密码提示问题的程序来让用户获得密码。在数据库中只需通过比较该用户提交的密码提示问题的答案是否与原来存在数据库中的答案相匹配来判断

22、是否给他提供正确的密码。2.3信息显示系统传达企业电子商务信息,包括图片新闻、商城快讯、一周热点排行、新闻专题、电商服务、精彩推荐、厂商动态和电商世界,紧跟时代脉搏,把握无限商机。(1)建立新闻数据库表。由于新闻信息量大、时效性强、新闻类别多,所以采用分类显示的方法。这样一来,就需要根据新闻类别的不同建立不同的新闻数据库表。 (2)设置与新闻信息相关的字段,例如新闻编号,新闻标题,新闻内容,新闻发布时间等,其中新闻编号和新闻发布时间在程序设计中起着相当重要的作用。这是因为用户总是想在最先看见最新的新闻,所以,我们在设计程序时,必须将新闻的显示次序按照新闻的发布时间的降序排列,这样就可以保证用户

23、最先看到的新闻一定是最先发布的。 (3)新闻信息的分页显示。2.4信息发布系统 为企业提供方便的在线信息发布功能,使企业及时地发布供应和需求信息。充分利用网络信息的时效性强、准确性高、便于存储和检索方便的功能,奠定企业进行网络营销决策和计划的基础。2.5信息查询系统 方便用户进行各种对感兴趣的信息进行检索,寻求商机,节省时间和资源。这部分包括分类查询和条件查询两部分。第三章 系统代码实现3.1 整合项目开发基本框架 准备工作(1) 配置开发环境JDK版本:jdkJ2EE容器:Tomcat 6.0数据库:MySQL 系统:Windows XP Profession开发工具:MyEclipse、D

24、reamweaver8.0、PhotoShop CS3本系统使用的框架版本:Struts2.0、Spring2.5、Ibatis(2)下载相关jar包到Spring、Struts和iBATIS官方网站下其最新压缩包,将下载的三个框架分别解压缩。新建一个Web Project(名称为SSH_NEWS)。 向项目中加入Spring框架将Spring解压缩以后spring-framework-dist目录中的spring.jar复制到Web项目的WEB-INF/lib目录中(Spring核心jar包)。复制spring-framework-liblog4j中的log4j相关的jar文件到项目中WEB

25、-INF/lib目录中(日志jar包)。打开WEB项目中的WEB-INF目录中的web.xml文件,添加及结合项目实际情况配置以下内容 contextConfigLocation/WEB-INF/config/applicationContext.xmllog4jConfigLocation/WEB-INF/config/perties log4jRefreshInterval 60000 3.1.3 向项目中加入Struts框架将解压之后的strutsstruts-.1appsstruts2-blank-WEB-INFlib下面的六个基本jar文件复制到Web项目的WEB-INF/lib目录

26、中打开WEB项目中的WEB-INF目录中的web.xml文件,添加及结合项目实际情况配置以下内容 struts2-cleanup org.apache.struts2.dispatcher.ActionContextCleanUp struts2-cleanup /* struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 配置数据源Spring提供了对多种数据连接池的支持,本项目选中c0p0来作为数据库的连接,直接将spring-framework-libc3p0下面的复

27、制到Web项目的WEB-INF/lib目录中(1)为了是后边修改数据库相关信息更加方便,在WEB-INFconfig目录中创建perties,具体内容:jdbc.driverClassName=jdbc.url=jdbc:mysql:/localhost:3306/eshop?useUnicode=true&characterEncoding=utf-8jdbc.username=rootjdbc.password=mysql(2)在WEB项目中的WEB-INFconfig目录中的Spinrg的配置危机applicationContext.xml文件,配置以下内容:/WEB-INF/confi

28、g/perties $jdbc.driverClassName$jdbc.url$jdbc.username$jdbc.password 为项目配置Spring事务管理在WEB项目中的WEB-INFconfig目录中的Spinrg的配置危机applicationContext.xml文件,添加以下内容: 配置项目定时器由于项目需要根据后台的数据生成实时的数据信息,因此需为项目配置一个时间调度器,让项目可以根据设定的时间实时执行我们所提供的方法,生成最新的信息。Spring提供对调度器的支持,将spring-framework-libquartz下面的复制到Web项目的WEB-INF/lib目录

29、中,同时将struts-lib项目复制到Web项目的WEB-INF/lib目录中编写相应的从数据库中读取数据生成最新信息的java类,本项目中此类为JspToHtml.java,项目中将根据设定的时间执行JspToHtml类中的buildHtml方法。详细代码请附件源码。在applicationContext.xml文件,添加以下内容:buildHtml0600000 向项目中加入iBATIS框架由于Spring压缩包里面已经有了iBATIS的jar包,直接spring-framework-libibatis下面的ibatis-.726.jar复制到Web项目的WEB-INF/lib目录中在i

30、BATIS中SqlMapClientFactoryBean是一个工厂bean,它暴露了两个关键属性用于注射IBatis配置文件和相关的数据源。在工厂内部,通过读取IBatis配置文件,Spring会创建出IBatis的核心组件SqlMapClient,并向相关的DAO进行注射。 SqlMapProductDao继承了SqlMapClientDaoSupport,后者暴露出一个sqlMapClient属性,用于接受Spring的注射。SqlMapClientDaoSupport会对其中封装的SqlMapClientTemplate做相应的设置,所以DAO子类便可在取用SqlMapClientTe

31、mplate时正常地工作了。 首先在WEB-INF/config中创建iBATIS配置文件sqlMapConfig.xml,通过它加载相应的sql配置文件,具体内容如下 在applicationContext.xml文件,添加对iBATIS的支持:/省略 WEB-INF/config/sqlMapConfig.xml/省略 相应的Dao以及Service则由Spring容器通过依赖注入来管理:/省略/省略 向项目中加入AJAX框架在目前的Web2.0热潮中,Ajax已成为人们谈论最多的技术术语!其实,AJAX(Asynchronous JavaScript and XML)是多种技术的综合,它

32、使用XHTML和CSS标准化呈现,使用DOM实现动态显示和交互,使用XML和XSTL进行数据交换与处理,使用XMLHttpRequest对象进行异步数据读取,使用Javascript绑定和处理所有数据。在本项目中,将使用目前比较流行的两个ajax框架ajaxAnywhere和dwr。配置dwr框架DWR(Direct Web Remoting)是一个开源的类库,可以帮助开发人员开发包含Ajax技术的网站。它可以允许在浏览器里的代码使用运行在Web服务器上的Java函数,就像它在浏览器里一样。DWR包含两个主要的部分,其一是运行在浏览器客户端的Javascript,这部分被用来与服务器通信,并更

33、新页面内容;其二是运行在服务器端的Java Servlet,这部分被用来处理请求并将响应结果发送给浏览器。在项目通过根据用户评论是提交的用户名和密码,查询是否有次用户存在,存在则将相应的信息返回到页面/判断是否匿名/省略function checkUser()var comment1= document.getElementById(commentVO.comment).value; comment1 = comment1.replace(/(s*)|(s*$)/g,); if(comment1=) alert(请输入评论内容);return false; /匿名 if(document.ge

34、tElementById(notuser).checked)comment();/不匿名,检查用户名和密码elsevar userVO = new UserVO();var name=document.getElementById(username).value;var pwd=document.getElementById(pwd).value;name = name.replace(/(s*)|(s*$)/g,);pwd = pwd.replace(/(s*)|(s*$)/g,);if(name=)alert(请填写用户名!);return; if(pwd=)alert(请填写密码!);r

35、eturn;userVO.loginName=name;userVO.loginPwd=pwd;userDao.loadUser(userVO,callBack);function callBack(data)if(data=null|data=)alert(用户名或密码不正确!);elsedocument.getElementById(commentVO.userId).value=data.id;comment();/省略上dwr官方网站下载最新的jar包,本项目中为版本,将dwr的jar包添加到web项目中。首先,在WEB-INF目录下创建dwr的配置文件dwr.xml 在web.xml

36、中配置dwr的servlet: /省略 dwr config-tcps /WEB-INF/dwr.xml debug true dwr /dwr/* /省略配置ajaxAnywhere使用AjaxAnywhere可以将页面简单的划分为多个区域(zone),然后调用AjaxAnywher刷新(Refresh)那些指定的区域,而不是整个页面。在本系统中,对于新闻的评论采用了ajaxAnywhere,当我们提交评论时,既可以在无需刷新整个页面的情况下,在下方的评论列表中看到提交的评论。如下图中,只刷新最新评论区域,同时也可以看到右上角的loading标志,如图3-1:图3-1 异步加载展示图向项目中

37、添加ajaxAnywhere的jar包,在web.xml配置相应的过滤器: AjaxAnywhere AjaxAnywhere *.jsf AjaxAnywhere *.jsp AjaxAnywhere *.action 向项目中加入URL重写框架通过URL重写,可以缩短url,隐藏实际路径提高安全性,易于用户记忆和键入,易于被搜索引擎收录。向项目中添加URL重写的jar包,本系统中使用的是urlrewritefilter-.jar。首先在WEB-INF中创建URLWRITER的配置文件urlrewrite.xml,具体内容如下: /InfoView_(0-9+).html$ /emotion

38、Action.load.action?emotionArticleVO.atricleId=$1 /queryInfo_(0-9+).html$ /emotionAction.queryForList.action?emotionArticleVO.auditFlag=Y&emotionArticleVO.flag=$1 /index.jsp$ /l_index.jsp /index.html$ /l_index.jsp 其次在web.xml中配置相应的过滤器/省略 UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFil

39、ter logLevel WARN /省略此时在浏览器中输入http:/localhost:8099/SSH_NEWS/InfoView_162.html,既可以执行/emotionAction.load.action?emotionArticleVO.atricleId=1633.2 具体代码实现作为一个电子信息展现的平台,如何更好的向外界展示企业的信息,是一个值得研究的重点,在项目中,为了获取企业发布的最新新闻列表,设计时间调度器,定时生成最新信息;为了平台的安全性和易于被搜索引擎收入,采用了url重写技术;为了提升与用户间的有好交互,向项目中加入了ajax框架。下面将通过具体的项目流程,

40、讲解以上重点。 持久层实现在持久程中主要包括文章VO和评论VO,同时文章和评论为一对多关系,即一篇文章可以拥有多条评论,而一条评论只能属于一篇文章。(1)表结构文章表 字段名类型备注IdInt文章idAuthorVarchar作者Contenttext文章内容ClickInt点击数Title Varchar文章标题IntroductionVarchar文章简介UpInt顶DownInt 踩FlagVarchar文章类型EanbleflagVarchar是否可用标识符AuditFlagVarchar是否审核标识符createDateDate创建时间pubDateDate发布时间PictureVa

41、rchar附件图片地址OriginVarchar文章来源评论表字段名类型备注IdInt评论idemotionarticleidInt评论文章idCommentVarchar评论内容CreateDateDate评论时间userIdInt评论用户(2)对应的VO文章vo(com.emotion.model.EmotionArticleVO)public class EmotionArticleVO extends BaseVO private int atricleId;private String title;private String author;private String conten

42、t;./省略get/set方法评论VO(com.emotion.model.CommentVO)public class CommentVO extends BaseVO private int id;/* * 用户id */private int userId;/* * 用户名 */private String userName;/ 评论内容private String comment;/* * 对应文章id */private int emotionArticlId;private String articleName;./省略get/set方法(3)对应的ibatis的xml文件文章VO

43、对应的xml文件(com/emotion/model/sql/ EmotionArticle.xml),主要代码如下:/省略SELECT id as atricleId,author,title,click,up,down,createDate,pubDate,picture,introduction,flag,if(flag=01,商城快讯,if(flag=02,一周热点,if(flag=03,最新文章,if(flag=04,电商世界,if(flag=05,电商服务,if(flag=06,精彩推荐,if(flag=07,亲情诗歌,if(flag=08,厂商动态,if(flag=09,亲情短信

44、,if(flag=10,新闻专题,图片新闻) as flagName FROM n_article where enableFlag=Y auditFlag=#auditFlag# flag =#flag# title LIKE BINARY CONCAT(%,#title#,%) title LIKE BINARY CONCAT(%,#title#,%) order by id desc limit #pageDateVO.startRowNum#,#pageDateVO.recordPerPage#/省略(1)相应的Dao(主要包括操作数据库的逻辑接口ICommentDao.java,IE

45、motionDao.java,以及其实现类CommentDaoImpl,EmotionDaoImpl组成,编写代码如下:ICommentDao(com.emotion.dao.inface.ICommentDao):public interface ICommentDao /查询评论列表public List queryForList(CommentVO commentVO);/增加评论public int addComment(CommentVO commentVO);IEmotionDao(com.emotion.dao.inface.IEmotionDao):public interfa

46、ce IEmotionDao /查询文章列表public List queryForList(EmotionArticleVO emotionArticleVO);/根据文章id加载文章内容public EmotionArticleVO load(EmotionArticleVO emotionArticleVO);/增加文章“顶”数public EmotionArticleVO addUp(EmotionArticleVO emotionArticleVO);CommentDaoImpl(com.emotion.dao.inface. CommentDaoImpl):public class

47、 CommentDaoImpl extends SqlMapClientDaoSupport implementsICommentDao /查询对应文章的评论列表public List queryForList(CommentVO commentVO) / 记录总数int count = (Integer) this.getSqlMapClientTemplate().queryForObject(comment.getListCount,commentVO);/ 总记录数commentVO.getPageDateVO().setRecordTotal(count);return this.g

48、etSqlMapClientTemplate().queryForList(comment.queryForList,commentVO);/省略EmotionDaoImpl(com.emotion.dao.inface. EmotionDaoImpl):public class EmotionDaoImpl extends SqlMapClientDaoSupport implementsIEmotionDao /查询文章列表public List queryForList(EmotionArticleVO emotionArticleVO) / 记录总数int count = (Integ

49、er) this.getSqlMapClientTemplate().queryForObject(emotionArticle.getListCount,emotionArticleVO);/ 总记录数emotionArticleVO.getPageDateVO().setRecordTotal(count);return this.getSqlMapClientTemplate().queryForList(emotionArticle.queryForList,emotionArticleVO);/省略在Spring配置文件中配置Dao(WEB-INF/config/ applicati

50、onContext-Common.xml):/省略/省略 业务逻辑层的实现在本信息平台中,对文章进行操作以及对文章评论进行操作的业务层由业务逻辑接口ICommentService.java,IEmotionService.java,以及其实现类CommentServiceImpl.java,EmotionServiceImpl.java组成,事务管理交由Spring2统一负责。编写代码如下:ICommentService.java(com.emotion.service.inface.IcommentService):public interface ICommentService /查询评论

51、列表public List queryForList(CommentVO commentVO);/增加评论public int addComment(CommentVO commentVO);IEmotionService.java(com.e.IEmotionService):public interface IEmotionService /查询评论列表public List queryForList(EmotionArticleVO emotionArticleVO);/根据文章id加载文章public EmotionArticleVO load(EmotionArticleVO emo

52、tionArticleVO);/增加文章“顶”数public void addUp(EmotionArticleVO emotionArticleVO);CommentServiceImpl.java(com.emotion.service.inface. CommentServiceImpl):public class CommentServiceImpl implements ICommentService private ICommentDao commentDao;public ICommentDao getCommentDao() return commentDao;/省略Emoti

53、onServiceImpl.java(com.emotion.service.inface. EmotionServiceImpl):public class EmotionServiceImpl implements IEmotionService private IEmotionDao emotionDao;private ICommentDao commentDao;public IEmotionDao getEmotionDao() return emotionDao;public void setEmotionDao(IEmotionDao emotionDao) this.emot

54、ionDao = emotionDao;/获得文章列表public List queryForList(EmotionArticleVO emotionArticleVO) return emotionDao.queryForList(emotionArticleVO);/省略在Spring配置文件中配置业务逻辑组件(WEB-INF/config/ applicationContext-Common.xml):/省略/省略3.2.3 控制层实现控制层主要是由struts来实现的,文章,评论控制器类EmotionAction.java ,CommentAction采用模型驱动,直接使用持久化类e

55、motionArticleVO,commentVO充当模型类,用于封装表单属性、请求参数及处理结果。然后再根据前面“spring与struts的整合”,在Spring配置文件及struts.xml中配置业务控制器类。代码如下:CommentAction(com.emotion. CommentAction):public class CommentAction extends ActionSupport implements ModelDriven private ICommentService commentService;/采用模型驱动private CommentVO commentVO

56、 = new CommentVO();public Object getModel() return commentVO;List commentList = new ArrayList();/获得评论列表public String queryForList() commentList = commentService.queryForList(commentVO);if(commentList!=null&commentList.size()0)CommentVO commentVO1 = (CommentVO)commentList.get(commentList.size()-1);co

57、mmentVO.setArticleName(commentVO1.getArticleName();return queryForList;/省略get/set方法EmotionAction (com.emotion. EmotionAction):public class EmotionAction extends ActionSupport implements ModelDriven public EmotionArticleVO emotionArticleVO = new EmotionArticleVO();/模型驱动public Object getModel() / TODO

58、 Auto-generated method stubreturn emotionArticleVO;public CommentVO commentVO = new CommentVO();public IEmotionService emotionService;private ICommentService commentService;List articleList = new ArrayList();/获得文章列表public String queryForList() articleList = emotionService.queryForList(emotionArticleVO);String forwardStr = queryForList;if (articleList != null & articleList.size() 0) EmotionArticleVO emotionArticleVO1 = (EmotionArticleVO) articleList.get(articleList.size() - 1);/ 跳转到图片新闻页面if (12.equals(emot

温馨提示

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

评论

0/150

提交评论