学java可以写论文吗?

介绍了如何利用WebWork、Sitemesh和Hibernate等JAVA开源技术设计并实现一个电子商务实验模拟系统,给出了系统结构、功能和实现方案。

关键词电子商务;实验模拟系统;Java开源技术

1简介

目前,在高校电子商务专业相关课程的教学中,迫切需要建立一个电子商务实验软件平台。平台应实现包括B2C、C2C、B2B、电子数据交换(EDI)、现代物流应用系统、电子金融、安全电子交易身份认证等必要的软件功能模块。电子商务的快速发展对软件开发技术提出了强有力的挑战。由于电子商务复杂的内部逻辑、苛刻的安全要求和快速变化的业务规则,要求电子商务实验模拟系统的开发技术功能强大且灵活,以满足电子商务实验教学的需要。

在电子商务系统的设计和开发中,有迫切需要解决的问题:可维护性、可扩展性、可测试性、可靠性、高性能和安全性。目前的N层软件架构很好地解决了上述问题。系统通常分为表示层、业务逻辑层和持久存储层。

J2EE规范从设计、集成、性能、安全和可靠性等方面为多层应用的开发提供了技术规范,如表示层、业务逻辑框架、持久性、事务、安全和日志服务等。目前,符合J2EE规范的开源项目如雨后春笋般涌现,其中不乏优秀的技术。利用现有的优秀开源技术,可以大大降低应用系统的开发周期和成本,同时提高整个系统的灵活性。

2本系统使用的开源技术。

对于现有成熟的WEB应用框架,其解决的主要问题如下:

1)将客户端网页请求中的输入数据封装到一个(请求的)数据对象中。

2)验证WEB请求中数据的有效性。

3)根据不同的网页请求,调度相应的业务逻辑对象进行处理,(请求的)数据对象作为参数传入。

4)业务逻辑对象处理业务规则后返回结果数据对象。

5)通过表示层将结果数据对象中的数据展示给用户。

6)业务实体的持久存储。

WebWork2、Sitemesh、Hibernate、Junit、XDoclet、Ant等开源项目都是比较成熟的开源项目。该系统的设计和实现综合利用了上述开源技术,很容易地解决了上述问题。

WebWork是由OpenSymphony开源组织开发的J2EE Web框架,致力于组件化和代码重用。WebWork由Xwork1和WebWork2***组成。

Xwork1简洁、灵活、功能强大。它是一个标准的命令模式实现,并且与web层完全分离。Xwork提供了很多核心功能:前端拦截器、运行时表单属性验证、类型转换、强大的表达式语言等等。拦截器就像一个过滤网,用来拦截客户端的调用,做一些处理,比如检查客户端调用的合法性,实现安全策略,支持事务等。

WebWork2构建于Xwork之上,后者处理HTTP响应和请求。WebWork2使用ServletDispatcher将HTTP请求变成动作(业务逻辑对象由Action类调用完成业务处理),实现会话和应用范围的映射,以及请求参数的映射。每个动作不依赖于任何层或任何容器。它们通过ActionContext使用请求和响应对象,从而将WEB层与逻辑层分开。Webwork的动作可以通过分配某些属性值来运行,而无需启动Web容器进行测试,这增强了WEB组件的可测试性。

WebWork2支持多视图表示,视图部分可以使用JSP、Velocity、FreeMarker、JasperReports、XML等。

在Web应用开发中,我们经常面临如何保证输入数据的合法性这一令人头痛的问题。对输入数据的验证有两种方式:页面Java脚本验证和服务器执行逻辑代码前的数据验证。前者难以保证系统安全性,通常作为输入数据验证的辅助技术。

WebWork使用Xwork的验证框架进行验证处理,可以通过配置拦截器来激活。它可以为每个需要验证的类指定一个xml验证文件,也可以在不同的情况下为一个类指定不同的xml验证文件。WebWork可以为每个动作类指定相应的验证文件,也可以为动作类的属性字段指定验证文件。最后使用拦截器组装动作及其验证文件,使得逻辑层不需要考虑额外的数据验证,简化了业务处理逻辑。

Sitemesh也是opensymphony开源组织开发的j2ee应用框架之一。主要用于管理网页的布局,致力于为众多页面组成的大型网站提供统一的样式、导航和布局功能。SiteMesh通过过滤器拦截请求和响应,给原始页面添加一个装饰器,然后将结果返回给客户端,被装饰的原始页面并不知道SiteMesh的装饰,从而避免了页面之间相互包含而导致的页面之间的耦合。

本系统采用面向对象的设计与实现,系统使用关系数据库管理数据,因为系统中的持久对象需要用关系数据库存储,带来了对象与关系之间的映射问题。关系表的记录很难完全映射到持久对象的关系上,主要体现在多表的关系映射类型多样,关联数据表的数量难以确定。可能是一个表映射多个持久对象,多个表映射一个持久对象,更有可能是一个表的一些字段映射到一个持久对象,而其他字段映射到其他持久对象。如果对象使用直接的数据库操作访问成员来实现持久化对象编程,那么1: n关系的持久化对象对数据库的查询实际上就是1+n SQL,必然导致数据库访问效率的大幅下降。

Hibernate是持久层设计的最佳技术,优雅地解决了上述对象和关系的映射问题。它是开源免费的,API也是开放的。自身功能不够用的时候,可以通过自己编码来扩展。

Junit用于类模块的单元测试。XDoclet和Ant是支持项目自动重构和文档自动生成的优秀开源工具,可以大大提高程序员的工作效率和质量。

3系统总体设计

该系统的主要目标是实现电子商务系统的仿真,为教师和学生提供一个进行相关实验的软件平台。重点是模拟电子商务环境下交易和管理各方的业务流程,同时便于交易各方根据需要制定相应的业务规则。因此,系统的设计要能够适应业务规则的变化,不必真实再现某些功能的实现,比如安全认证子系统中认证中心安全认证服务的实现。此外,系统还应加强实验过程管理的功能设计,使师生能快速掌握实验的过程和进度,并能自动处理实验结果,提供相关查询。

在一个实验中,学生通常在多个虚拟企业中扮演多种不同的业务角色,系统应提供快速角色转换功能,以便学生轻松理解不同业务流程的相关操作之间的关系和交互。

基于上述目标,系统分为两个子系统:业务系统和实验系统。

业务系统分为五个二级子系统:电子银行系统、认证系统、交易系统、企业业务管理系统和物流系统。实验系统分为两个子系统:学生自助系统和学生实验管理系统。

在每个子系统中,根据不同的操作员角色划分子模块,如“交易系统”(系统结构如图1所示),分为交易大厅、会员企业后台管理、交易中心后台管理三个子系统。在会员企业后台管理中,可以根据当前学员所承担的业务角色,列出所涉及的多个企业供其选择。整个系统采用单点登录验证,减少了学生在使用各模块功能时的登录操作,避免了一些流行的实验模拟系统需要学生记住多个密码,在同一个实验中重复登录的问题,使学生更加关注业务流程,提高了实验效率。

图1交易系统结构图

实验系统分为学生自助和实验管理两个子系统。通过学生自助子系统,学生可以查询老师布置的实验任务、所做实验的结果以及实验操作步骤中的主要错误,从而了解不足并及时改进。通过实验管理模块,教师可以安排实验任务,查询学生实验进度和结果,了解学生实验过程中的常见问题,以便及时指导。

系统的分析和设计采用面向对象的UML建模语言。在充分分析系统需求后,用UML的用例图和序列图描述了系统的概念模型,然后进行详细设计,描述了系统的类图和类关系图,建立了初步的数据模型。利用Borland公司的协同建模工具,实现了系统模型与源代码和数据库之间的双向自动转换。

为了满足本系统开发的工程需求,开发人员分为以下几类:a、系统分析师;b、后台组件开发程序员(主要是动作类和业务逻辑类);c .后台组件测试器;d .前台用户界面程序员(主要是JSP程序员+美工);e、前台测试技术员。通过Sitemesh和WebWork的结合,实现了各模块用户界面和后台组件的独立开发和测试,有利于分工协作,大大减少了开发人员在信息交流上花费的时间,提高了系统开发的效率。

4系统实施

4.1,操作环境

为了适应高校计算机系统软件环境的多样性,该系统可以运行在任何符合J2EE规范的WEB容器和最流行的关系数据库中。本系统的开发选择了开源项目Tomcat和Mysql。

4.2 Web应用程序的配置

限于篇幅,仅列出部分关键配置信息。根据J2EE规范,本系统的目录规划如下(表1):

父目录子目录描述

/src Java类源代码

/lib系统需要的第三方类库文件

/docs系统开发文档

/ROOT WEB应用程序根目录

/ROOT WEB-INF WEB应用程序配置目录

/ROOT/

WEB-INF类Java类字节码文件目录

/ROOT _decorators站点网格装饰页面

表1系统目录结构

在/ROOT/WEB-INF中,存储了web.xml、sitemesh.xml、decorators.xml等配置文件。

WEB视图层的配置:

本系统设计了几个装饰页面,下面列出了/WEB-INF/decorators.xml中主要装饰页面的配置信息:

& ltdecorators default dir = "/_ decorators " & gt;

& ltdecorator name = " main " page = " main . JSP " & gt;

& lt模式& gt* & lt/pattern & gt;

& lt/decorator & gt;

& lt/decorators & gt;

主装修页面main.jsp的布局形成了流行的“左上、中右下”的页面结构。上半部分显示系统logo和主页链接,各大子系统链接,下半部分显示版权声明和联系方式,左右部分显示常用模块,中间部分是当前页面的主要功能操作区。其JSP页面的主体如下所示:

& lttable width = " 100% " align = " center " >

& lttr & gt& lttd width="134" valign="top " >

& ltpage:apply decorator name = " simple "

page = "/site mesh/left . JSP "/& gt;& lt/TD & gt;& lt/tr & gt;

& lttr & gt& lttd width="488" valign="top " >

& ltpage:apply decorator name = " simple "

page = "/site mesh/middle _ top . JSP "/& gt;& ltbr & gt

& ltdecorator:body/& gt;& ltbr & gt

& ltpage:apply decorator name = " simple "

page = "/site mesh/middle _ bottom . JSP "/& gt;& lt/TD & gt;& lt/tr & gt;

& lttr & gt& lttd width="122" valign="top " >

& ltpage:apply decorator name = " simple "

page = "/site mesh/right . JSP "/& gt;& lt/TD & gt;& lt/tr & gt;

& lt/table & gt;

持久层休眠的配置:

首先,通过classes/hibernate.cfg.xml文件配置Hibernate的数据库连接信息。然后在每个类二进制文件需要持久化的目录下建立一个与类同名的hbm.xml文件,配置这个类属性与数据表中字段的对应关系以及类之间的映射关系。以下是Customer.hbm.xml的内容

& lthibernate-mapping package = " com . un . eclab " & gt;

& ltclass name = " Customer " table = " Customer " >

& ltid name="id" column="CID " >

& lt生成器class="increment" />& lt/id & gt;

& ltproperty name = " struser name " column = " username "/& gt。

& ltproperty name = " str password " column = " password "/& gt;

& lt/class & gt;

& lt/hibernate-mapping & gt;

当您需要持久化客户对象时,请使用以下代码:

会话工厂sf =

新配置()。配置()。buildSessionFactory();

session session = SF . opensession();

transaction tx = session . begin transaction();

客户customer =新客户();

customer.setUsername(“客户名称”);

customer . set password(" customer password ");

session.save(客户);

tx . commit();

session . close();

4.3业务逻辑层的实现

以交易系统为例,该子系统实现的主要类如下所示(表2):

类名主函数

IProduct产品类接口,规范了产品类的主要操作,适应不同企业对产品类的要求。

Product产品类,实现Iproduct接口。企业可以继承这个品类,实现对自己产品的管理。

EccCart交易中心购物车类,可以管理多种交易类型。

EccCartItem购物汽车类别

EccOrder订单类别

选项企业选项类,管理业务规则。

表2主要交易系统类型列表

通过以上几个类的配合,实现了交易系统的主要业务逻辑。

5结束语

总的来说,利用开源技术设计电子商务实验模拟系统具有开发周期短、系统灵活性高、易于开发和维护等优点,大大降低了系统开发的复杂度和开发成本,能够适应不断变化的用户需求,具有广阔的应用前景。