J2EE平台上MVC模式的实现
- 格式:pdf
- 大小:219.15 KB
- 文档页数:5
第28卷第3期 2006年05月 武汉化工学院学报 J. Wuhan Inst. Chem.Tech Vol_28 No.3 May 2006
文章编号:1004—4736(2006)03—0071—04
J2EE平台上MVC模式的实现
丁月华
(武汉工业学院计算机与信息工程系,湖北武汉430023)
摘要:主要围绕目前IT届主流的多层分布式开发平台——J2EE平台展开深入探讨.对J2EE架构进行了 研究・着重分析MVC模式在J2EE框架中实现的基本原理,并通过一个具体的开发实例给予说明. 关键词:J2EE}EJB;JSP Servlet MVC模式 中圈分类号:TP 393.09 文献标识码:A
0引 言 1 J2EE架构概述
企业应用体系结构经历了从主机批处理方
式、哑终端/主机模式、网络/文件服务器方式、客 户服务器模式[1].随着Internet的进一步迅猛发
展,基于C/S模型的两层体系结构已经不能适应
当今企业应用的发展要求.而多层分布式体系结
构适应了企业应用的发展要求,它使得企业应用
具有很好的扩展性、可靠性、稳定性、安全性.同
时,通过组件技术进行代码重用,简化系统开发的
周期,大大减低了企业应用系统开发的复杂度.
Sun公司推出的Java 2 Enterprise Edition
(J2EE)企业平台为多层分布式企业应用提供了
一套完整的技术和规范,它不仅继承了Java语言
平台独立的特点,而且结合了组件技术,为现代企 业多层分布式应用提供了一套完整的解决方案. 1.1 J2EE层次 J2EE平台应用多层分布式结构来构造企业
应用.企业应用的逻辑根据其功能而分布到不同
的J2EE组件中.在J2EE的应用平台中一般分为 以下四层[2]:。
客户层:客户层组件运行在客户机上;
web层:Web层组件运行在J2EE服务器上; 业务逻辑层:作为解决或满足某个特定业务
领域的需要的逻辑的业务代码由运行在业务层的
EJB来执行;
企业信息系统层(EIS);运行在EIS服务器
上.EIS服务器运行企业信息系统软件,如企业资
源计划、大型事务处理、数据库系统及其他遗留信
息系统.J2EE平台的层次结构如图1所示.
● L_二 Web服务器 ● EJB容器 ● ● ; JSP ●: EJB : ● ● ● l :k : Java Servlet 《 厂 ]._]/ EJB
J2EE —— J2EE ,
图1 J2EE层次 Fig.1 J2EE layer 1.2 J2EE组件 J2EE标准定义了一个应用组件框架,作为企
业应用系统基本构造模块的组件就建立在这个框
架之上.j2EE组件框架只是一个以库、类和接口 企业信息系统层
固
形式提供的基础架构,最终构成应用的业务逻辑
和表现/控制逻辑要由建立在这个框架上的应用
组件实现.J2EE说明书中定义了以下组件. 客户层组件:Applet、Applicant client(应用程
收稿日期;2006—02一O9 作者简介;丁月华(1979一),女,士家族,湖南石门人,硕士.研究方向:计算机应用支撑及电子商务.
维普资讯 http://www.cqvip.com 武汉化工学院学报 第28卷
序客户端)和浏览器等.
Web层组件:Servlet、JSP、可选的JavaBean
和Java Server Pages Standard Tag Library.
业务层组件:EJB组件,它是J2EE架构中的
核心技术,在这个组件里需要定制业务逻辑.EJB
规范定义了一个开发和部署分布式商业逻辑的框 架,以简化企业级应用的开发.
1.3 J2EE容器与服务 容器实际是指应用服务器提供的特定功能的
软件模块,用户所开发的程序组件要在容器内运
行,组件和容器的关系有些像计算机插件和主板
的关系;程序组件在部署时被安装在容器里,容器 是能提供基本功能的底层平台,它们之间通过接
口进行通信.总之,容器就是为组件服务的,对不
同的J2EE组件而言也特别对应一个装载它的容
器,按J2EE标准定义了四种不同的容器.
Applet容器:运行和管理Applet,一般浏览
器提供了Applet运行环境; 应用客户端容器:运行和管理标准Java应用
客户程序,包括Swing应用;
Web容器:运行和管理表现逻辑层的Servlet 和JSp组件;
EJB容器:运行和管理逻辑层EJB组件.
服务是由容器提供的,更直观的说服务是由
J2EE应用服务器提供的.J2EE以服务的形式提
供了支撑企业应用的各种基石,例如邮件、数据库
连接、消息和事务处理等.这些最基本的服务以接 口、类库、驱动程序、适配器等形式提供.就像一个
操作系统一样,J2EE提供了在各种服务之上的一
个公共的Java接口.各个底层服务的实现细节不
尽相同,可能存在细微的差别,公共的Java接口
使得应用的代码完全脱离了细节问题的纠缠.
2 J2EE架构MVC模式开发的基本
原理
MVC(Model/View/Contro1)设计模式是软
件设计的典型设计模式 .在这种设计结构下,一 个应用被分为三个部分:Model、View和Control,
每个部分负责不同的功能.Model是指对业务数
据/信息的处理模块,包括对业务数据的存取、加 工、综合等;View是指用户界面,也就是面向用户
的数据表示,View的实现一般是由界面设计人员
和界面程序员来完成;Control则负责View和
Model之间的流程控制,也就是完成两个方向的
动作:1.将用户界面(View)的操作映射到具体的
Model,以完成具体的业务逻辑;2.将通过Model
处理完的业务数据及时的反应到用户界面上。 J2EE架构和MVC模式设计可得到完美结
合,MVC设计模式具体对应到J2EE技术:JSp
对应于视图,因为整个应用系统主要通过JSp来
与外界进行交互;Servlet对应于控制类,作为JSp
与EJB之间的中间枢纽;EJB和JavaBean对应于 模型,主要进行数据业务的处理.MVC设计模式
在J2EE架构下构建的应用框架如图2所示.
3 JZEE架构MVC模式的实例开发
开发实例是某公司信息管理系统,图3详细
说明了人力资源子系统中工资模块的所有用例, 核心用例是员工月工资明细计算.
3.1数据库设计
工资模块主要包含的数据库表,具体字段如
图4所示. RS一员工基本工资表:记录员工的基本工资.
RS一员工月工资明细表:记录每位员工的月 工资明细.
RS一税率:该表只记录当前的有效税率.
RS一员工保险基本表:记录员工保险的信息.
RS一员工月保险缴交明细表:记录员工的每
月缴纳的保险.
RS一员工基本情况表:由于在计算保险时需
要根据员工的户口所在地来确定不同的保险比例
来计算员工的月保险明细.
RS一保险缴交比例表:记录保险的缴交系数.
rt web容器 L —J F TR 典 L l‘ I l、 / 、
\ . / ■Ll 会话Bean 卜 。— 数
I I I ̄.¥tlNServlet / 据 一 、 -.q视图JsP 实体Bean },, 源 l
客户端 \、L \
图2 J2EE架框的MVC模式应用框架 Fig.2 MVC pattern based oil J2EE applocati
on framework 维普资讯 http://www.cqvip.com 第3期 丁月华 J2EE平台上MVC模式的实现
图3 系统工资模块用例图 Fig.3 Salary module case diagram
图4数据库设计 Fig.4 Database design 3.2类设计 Web容器会将JSP转化为一个Servlet类,一般
按照MVC设计模式中的划分的model、 来说JSP页面完成的是显示功能・所有的View
vJew,control来设计类. 类如表1所示.
3.2.】 View类事实匕JSP也是一个java类, 表l View类 Table 1 VJew cl
ass 维普资讯 http://www.cqvip.com 74 武汉化工学院学报 第28卷
3.2.2 Control类 主要是根据相关操作要求 (具体操作类别由jsp页面传递的ID标识),跳转 到不同的视图(JSP页面)或者是事务逻辑(
EJB).比如在人力资源模块中的工资模块中采用
了三个servlet控制类,分别是:
(1)caculateSalaryControlServlet类主要是控 制工资生成过程中的流程,控制过程如下所述:
如果从view类(jsp页面)传递回来的ID标
记是“intalize”,就初始化员工的月工资信息,将初 始化信息跳转到intalizeAnswerView.jsp显示.
如果从view类(isp页面)传递回来的ID标
记是“caculateTax”,就根据综合部人员输入的每
月不定工资信息信息计算员工的个人所得税,就
新生成的员工的月工资明细进入数据库,将生成 的工资明细结果返回到monthSalaryView.jsp.
(2)baseSalaryServlet类主要是控制相关的
基本工资操作的选择:添加、删除、修改、查询:
如果从view类(jsp页面)传递回来的ID标
记是“insert”就添加员工的工资基本信息,将初始
化 信 息 跳 转 到/RS/rlzy/gzgl/ intalizeAnswerView.jsp显示. 如果从view类(jsp页面)传递回来的ID标
记是“update”就计算员工的工资基本信息.
如果从view类(jsp页面)传递回来的ID标
记是“query”就查询员工的工资基本信息. 如果从view类(jsp页面)传递回来的ID标记是”
delete”就删除员工的工资基本信息.
(3)TaxRateServlet类:该Servlet主要是处理 税率的管理. 3.2.3 Model类在工资模块中,设计了三个实
体EJB,两个会话EJB.而保险管理和税率管理都
是采用的Javabean来实现的. 实体Bean
BaseSalary:该实体Bean对应的是数据库中 的RS一员工基本工资表 MonthSalary:该实体Bean对应的是数据库
中的RS一员工月工资明细表
MonthInsurance:该实体Bean对应的是数据
库中的RS一员工月缴交保险明细表 会话Bean
MonthSalaryControl:该会话bean主要是完
成月工资生成这样一个用例.在会话Bean中没有
采用直接调用BaseSalary和Monthlnsurance这样
两个实体bean来生成员工工资的初始化信息,而
是采用SessionBean直接自己创建连接,调用存储
过程来创建,目的是为了获得更高的性能.根据每
个员工的固定工资信息,再根据综合部管理人员 输入的其他不定工资项来最终计算出月工资明
细.图5显示了JSP,Servlet,EJB利用MVC模式
协同完成工资计算用例.
巨窜巨雪 哩至 囤
: : : : :
工资月份动作ID 工资月份
初始化工资