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 工资月份 

初始化工资