论文部分内容阅读
摘 要:随着计算机硬件和软件的发展,J2EE应用程序的复杂度越来越大,再加上一些应用程序层次不清、模块之间耦合度较大等一些问题,造成程序的后期维护难度较大,传统的单一类设计模式和框架结构已不能适应需求。本文提出了一种基于Model-View-Controller(MVC)模式的Struts框架的设计方法,使得程序层次更清晰,维护更方便,极大地提高了开发的效率和降低软件的后期维护成本。本文首先介绍了MVC模式的概念和Struts框架技术;接着提出基于MVC设计模式的Struts框架,并用程序实例给予实现;最后总结了这种框架模式的优缺点。
关键词:MVC;设计模式;框架;Struts
0.引言
目前,大多数J2EE应用程序存在层次不清,模块之间耦合度较高,软件开发过程中牵一发而动全身,从而使软件开发人员工作量随之增加,同时也增加了软件开发的成本,而用户和软件开发人员在开发需求分析阶段沟通存在一定的沟壑,造成软件开发前期的需求分析做的不够充分,在开发的后期,用户不断增加的需求给软件开发人员带来很多挑战,以及涉及多种技术,这样对设计开发人员提出了很高的要求。在此情况下,构建一个软件框架来降低软件开发难度、增加应用程序的可维护性和降低软件开发难度十分必要。
1.MVC设计模式
MVC是Model—View—Controller的简称[1],即模型—视图—控制器[2],是一种目前广泛流行的软件设计模式。MVC将事务逻辑与数据表示层分离,同时也将应用的行为(即触发事务处理的事件)单独分离出来,是Observer设计模式的一种典型应用。MVC模式主要由3个部分组成:模型、视图和控制器,其结构如图1所示。
模型包含了应用问题的核心数据、逻辑关系和计算功能,它封装了所需的数据,提供了完成问题处理的操作过程。模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
视图部件把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。
控制器部件是处理用户与软件的交互操作,其职责是控制提供模型中任何变化的传播,确保用户界面与模型间的对应联系,它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。通常一个视图具有一个控制器。
MVC本身就是一个非常复杂的系统,而Struts是Apache组织的一个开放源码项目,还是一个比较好的MVC框架,所以本文在采用MVC实现Web应用时,采用一个现成的MVC框架—Struts,以达到事半功倍的效果。
2.Struts框架
Struts是Apache软件组织提供的一项开放源码项目,它为Java Web应用提供了模型—视图—控制器(Model—View— Controller,简称MVC)框架[2],尤其适用于开发大型可扩展的Web应用。Struts为Web 应用提供了一个通用的框架,使得开发人员可以把精力集中在如何解决实际业务问题上,此外, Struts 框架提供了许多供扩展和定制的地方,应用程序可以方便地扩展框架,来更好地适应用户的实际需求。Struts应用包括3类组件:控制器组件、模型组件和视图组件,还有一个很重要的配置文件Struts-config.xml。
(1)Struts模型组件
应用程序的数据以及与数据交互所需的逻辑特征由模型来表示。Struts框架不会为开发应用程序的模型层提供任何特定功能或约束,Struts赋予应用程序的灵活性来使用任何方法或技术以构建模型层代码。
(2)Struts视图组件
Struts框架中的视图是使用JSP页面构建的,在这些JSP文件中没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的JSP标签,或者自定义标签,如Struts标签库中的标签。除此之外,通常把Struts框架中的ActionForm Bean也划分到视图模块中。ActionForm Bean是一种JavaBean,Struts框架利用ActionForm Bean来进行视图和控制器之间表单数据的传递。Struts框架把用户输入的表单数据保存在ActionForm Bean中,并把它传递给控制器,控制器可以对ActionForm Bean中的数据进行修改,JSP文件使用Struts标签读取修改后的ActionForm Bean信息,重新设置HTML表单。
(3)Struts控制器组件
控制器是Struts框架最重要的组件,由ActionServlet类和Action类来实现。ActionServlet类继承了javax.servlet.http.HttpServlet类,它在MVC模型中扮演中央控制器的角色。ActionServlet主要负责接受HTTP请求信息,根据配置文件struts-config.xml的配置信息,把请求转发给适当的Action对象,如果对象不存在,ActionServlet会先创建这个对象。
(4)Struts配置文件Struts-config.xml
用户请求是通过Actionservlet来处理和转发的。那么ActionServlet如何决定把用户请求给那个Action对象呢?在Struts中这些配置信息(即请求转发的路径)都存储在特定的XML文件Struts-config.xml中。在该配置文件中,每个Action的信息都通过一个Action元素来配置。在系统启动的时候,这些配置信息自动被读入内存,在Struts的运行期间使用。
3.Struts对MVC的实现
为了简化问题,降低应用程序的复杂程度,在应用程序中使用UserBean类,该类采用硬编码的数据验证用户凭证,但是在实际的应用程序中,UserBean类将会使用存储在数据库中的记录来验证用户信息。要使用Struts首先要将Struts库文件添加到项目,然后在WEB-INF下建立Struts-config.xml配置文件,最后,在Web.xml中正确配置ActionServlet。这些是使用Struts开发准备工作,要在正式开发开始前做好。以上操作都可以借助开发工具(MyEclipse)自动生成。
下面通过程序源码来分别说明对模块组件的构建
1.构建视图(view)—ActionForm文件
UserActionForm.java
public class UserActionForm extends ActionForm{
public UserActionForm( ){}
private string password;
private String userName;
public String getPassword( ){return password;}
public void setPassword(String password){this.password=password;}
public void setUserName(String userName){this.username=username;}
public getUsername( ){return userName;}}
当控制器接受到请求后,此文件由ActionServlet填充,此文件包含与login.jsp页面中的属性相对应的getter和 setter方法。Form Bean在任何情况下都包含要向用户显示的数据,所以它视为视图组件。
2.构建视图—登陆界面
Login.jsp
欢迎
此文件生成友好的欢迎界面呈现在用户面前,并把用户的请求信息发送到控制器中。
3.配置文件:Struts-config.xml
"userstruts.UserActionForm">
scope="session" type=userstruts.LoginAction">
从以上文件我们可知,元素提供了关于处理请求的所有信息。Name属性指定Form Bean的名称,path属性指定控制器Action类的路径,type属性指定控制器类的类名,然后forward元素为每个视图页面指派名称。其中1-3行的配置信息声明了UserActionForm,为其指定了一个名字UserActionForm。第5行是/loginAction的配置信息。第7、8行定义/loginAction的两个出口。
4.构建Struts模型(JavaBean模型)
UserBean.java
public class UserBean{
public UserBean( ){
public boolean verifyUser(String userName,String password){
if(username.equals("smxpt")&&password.equals("smxpt"){
return true;}
else{
return false;} } }
5.构建Struts控制器(Action文件)
LoginAction.java
public class LoginAction extends Action{
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest servletRequest,
HttpServletResponse servletResponse){
UserActionForm userActionForm=(userActionForm) actionForm;
String username=userActionForm.getUserName( );
String password=userActionFrom.getPassword( );
UserBean user=new UserBean( );
boolean flag=user.verifyUser(username,password);
if(flag){return actionMapping.findForward("success");}
else{return actionMapping.findForward("error");}}}
这个文件是Struts框架的核心,它接受到用户的请求后负责具体如何做,把什么样的一种处理结果呈现给用户。
6.结束语
在本文中提出的基于MVC设计模式的Struts框架技术,它设计目的是从整体上减轻构造企业Web应用的负担,使应用程序结构层次清晰,模块之间耦合度降低,大大提高了开发效率,同时也提高了系统的可维护性和可扩充性,但是测试不方便和对事件支持不够还有待进一步研究。
[参考文献]
[1]孙卫琴,精通Struts基于MVC的Java Web设计与开发,电子工业出版社,2004.8
[2]刘甲耀,严桂兰.Core Java应用程序设计教程[M].北京:电子工业出版社,2005.2.97-304
关键词:MVC;设计模式;框架;Struts
0.引言
目前,大多数J2EE应用程序存在层次不清,模块之间耦合度较高,软件开发过程中牵一发而动全身,从而使软件开发人员工作量随之增加,同时也增加了软件开发的成本,而用户和软件开发人员在开发需求分析阶段沟通存在一定的沟壑,造成软件开发前期的需求分析做的不够充分,在开发的后期,用户不断增加的需求给软件开发人员带来很多挑战,以及涉及多种技术,这样对设计开发人员提出了很高的要求。在此情况下,构建一个软件框架来降低软件开发难度、增加应用程序的可维护性和降低软件开发难度十分必要。
1.MVC设计模式
MVC是Model—View—Controller的简称[1],即模型—视图—控制器[2],是一种目前广泛流行的软件设计模式。MVC将事务逻辑与数据表示层分离,同时也将应用的行为(即触发事务处理的事件)单独分离出来,是Observer设计模式的一种典型应用。MVC模式主要由3个部分组成:模型、视图和控制器,其结构如图1所示。
模型包含了应用问题的核心数据、逻辑关系和计算功能,它封装了所需的数据,提供了完成问题处理的操作过程。模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
视图部件把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。
控制器部件是处理用户与软件的交互操作,其职责是控制提供模型中任何变化的传播,确保用户界面与模型间的对应联系,它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。通常一个视图具有一个控制器。
MVC本身就是一个非常复杂的系统,而Struts是Apache组织的一个开放源码项目,还是一个比较好的MVC框架,所以本文在采用MVC实现Web应用时,采用一个现成的MVC框架—Struts,以达到事半功倍的效果。
2.Struts框架
Struts是Apache软件组织提供的一项开放源码项目,它为Java Web应用提供了模型—视图—控制器(Model—View— Controller,简称MVC)框架[2],尤其适用于开发大型可扩展的Web应用。Struts为Web 应用提供了一个通用的框架,使得开发人员可以把精力集中在如何解决实际业务问题上,此外, Struts 框架提供了许多供扩展和定制的地方,应用程序可以方便地扩展框架,来更好地适应用户的实际需求。Struts应用包括3类组件:控制器组件、模型组件和视图组件,还有一个很重要的配置文件Struts-config.xml。
(1)Struts模型组件
应用程序的数据以及与数据交互所需的逻辑特征由模型来表示。Struts框架不会为开发应用程序的模型层提供任何特定功能或约束,Struts赋予应用程序的灵活性来使用任何方法或技术以构建模型层代码。
(2)Struts视图组件
Struts框架中的视图是使用JSP页面构建的,在这些JSP文件中没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的JSP标签,或者自定义标签,如Struts标签库中的标签。除此之外,通常把Struts框架中的ActionForm Bean也划分到视图模块中。ActionForm Bean是一种JavaBean,Struts框架利用ActionForm Bean来进行视图和控制器之间表单数据的传递。Struts框架把用户输入的表单数据保存在ActionForm Bean中,并把它传递给控制器,控制器可以对ActionForm Bean中的数据进行修改,JSP文件使用Struts标签读取修改后的ActionForm Bean信息,重新设置HTML表单。
(3)Struts控制器组件
控制器是Struts框架最重要的组件,由ActionServlet类和Action类来实现。ActionServlet类继承了javax.servlet.http.HttpServlet类,它在MVC模型中扮演中央控制器的角色。ActionServlet主要负责接受HTTP请求信息,根据配置文件struts-config.xml的配置信息,把请求转发给适当的Action对象,如果对象不存在,ActionServlet会先创建这个对象。
(4)Struts配置文件Struts-config.xml
用户请求是通过Actionservlet来处理和转发的。那么ActionServlet如何决定把用户请求给那个Action对象呢?在Struts中这些配置信息(即请求转发的路径)都存储在特定的XML文件Struts-config.xml中。在该配置文件中,每个Action的信息都通过一个Action元素来配置。在系统启动的时候,这些配置信息自动被读入内存,在Struts的运行期间使用。
3.Struts对MVC的实现
为了简化问题,降低应用程序的复杂程度,在应用程序中使用UserBean类,该类采用硬编码的数据验证用户凭证,但是在实际的应用程序中,UserBean类将会使用存储在数据库中的记录来验证用户信息。要使用Struts首先要将Struts库文件添加到项目,然后在WEB-INF下建立Struts-config.xml配置文件,最后,在Web.xml中正确配置ActionServlet。这些是使用Struts开发准备工作,要在正式开发开始前做好。以上操作都可以借助开发工具(MyEclipse)自动生成。
下面通过程序源码来分别说明对模块组件的构建
1.构建视图(view)—ActionForm文件
UserActionForm.java
public class UserActionForm extends ActionForm{
public UserActionForm( ){}
private string password;
private String userName;
public String getPassword( ){return password;}
public void setPassword(String password){this.password=password;}
public void setUserName(String userName){this.username=username;}
public getUsername( ){return userName;}}
当控制器接受到请求后,此文件由ActionServlet填充,此文件包含与login.jsp页面中的属性相对应的getter和 setter方法。Form Bean在任何情况下都包含要向用户显示的数据,所以它视为视图组件。
2.构建视图—登陆界面
Login.jsp
欢迎登陆系统!
请输入用户名: | ||
请输入用密码: |
此文件生成友好的欢迎界面呈现在用户面前,并把用户的请求信息发送到控制器中。
3.配置文件:Struts-config.xml
从以上文件我们可知,
4.构建Struts模型(JavaBean模型)
UserBean.java
public class UserBean{
public UserBean( ){
public boolean verifyUser(String userName,String password){
if(username.equals("smxpt")&&password.equals("smxpt"){
return true;}
else{
return false;} } }
5.构建Struts控制器(Action文件)
LoginAction.java
public class LoginAction extends Action{
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest servletRequest,
HttpServletResponse servletResponse){
UserActionForm userActionForm=(userActionForm) actionForm;
String username=userActionForm.getUserName( );
String password=userActionFrom.getPassword( );
UserBean user=new UserBean( );
boolean flag=user.verifyUser(username,password);
if(flag){return actionMapping.findForward("success");}
else{return actionMapping.findForward("error");}}}
这个文件是Struts框架的核心,它接受到用户的请求后负责具体如何做,把什么样的一种处理结果呈现给用户。
6.结束语
在本文中提出的基于MVC设计模式的Struts框架技术,它设计目的是从整体上减轻构造企业Web应用的负担,使应用程序结构层次清晰,模块之间耦合度降低,大大提高了开发效率,同时也提高了系统的可维护性和可扩充性,但是测试不方便和对事件支持不够还有待进一步研究。
[参考文献]
[1]孙卫琴,精通Struts基于MVC的Java Web设计与开发,电子工业出版社,2004.8
[2]刘甲耀,严桂兰.Core Java应用程序设计教程[M].北京:电子工业出版社,2005.2.97-304
其他文献
摘 要:目前,在高校思想政治理论课教育教学改革的时代大背景下,实施案例教学具有重要的现实意义。本文在教学实践经验的基础上,对高职毛泽东思想和中国特色社会主义理论体系概论课案例教学的组织方式、作用和应注意的问题等进行了有益的探讨。 关键词:高职思想政治理论课;案例教学;组织方式;作用;应注意的问题 毛泽东思想和中国特色社会主义理论体系概论(以下简称“概论”),是高职学生的一门必修课程,是对大
期刊
摘 要:当前,大学生在思想政治理论课学习上普遍存在着消极表现,这严重影响了思想政治理论课教学的效果,成为阻碍思想政治理论课德育功能实现的瓶颈。因此,研究分析大学生产生这种消极表现的原因,从教育理念、教学内容和教学方法等方面探讨消解的对策,对提高当代大学生的整体素质具有重要的现实意义。 关键词:大学生;思想政治理论课;学习;原因;对策 思想政治理论课,是我国高校每个大学生的必修课。2004年
期刊
摘 要:作为翻译文化之子集的电影翻译既是一个文化产品,更是一个商业产品。作为传神之笔的片名的取舍直接关系到该商业产品之成功失败,也关系到不同文化之间的交流和传播。因为东西方文化的差异性而导致文化交流的障碍。在进行英文影片片名的翻译时,应从忠实性、艺术性、通俗性、文化性及“叛逆”性等几个方面来进行斟酌、选择、确定,从而保证文化交流的畅通。 关键词:英文片名;文化交流;汉译;特征 电影是
期刊
摘 要:品字形汉字不仅形体美,而且一般都表示“众多”这一相同的词源义。具有相同词源义的根源是古人多用三来穷分事物,三有表示许多这一含义,同时也是直观归类思维的产物。 关键词:品字形汉字;词源义;文化动因 汉字是一种表意文字,很多汉字的形体能够反映出汉字本身所蕴含的深刻的文化内涵,同构形字符构成的字。其中有一种是三个相同部件并排排列,另一种是呈现品字形排列,这种字我们姑且叫它品字形汉字
期刊
摘 要:翻译的过程不仅涉及语言的转换,还涉及不同特征的文化的转换。汉英两个民族连同它们的语言在思维方式、价值标准、审美取向、哲学传统、民族心理等方面都存在巨大差异。揭示这些引起误会和文化冲突的因素,是克服英汉误译的重要途径。 关键词:英汉翻译;形似;误读 由于汉字是当今世界上惟一的象形表义文字,而汉语又是缺乏形态标记的意合型语言,造成中国人在语言认知上比西方人更倚重视觉识别和心领神会
期刊
摘 要:从政党报刊阶段进入大众化报刊时期,使得传统报人摆脱工具人格形态,获得了独立的职业人格形态,这种独立人格体现在三个方面:逐渐淡化了政治情结;追求独立意志;生存方式是完全独立的。 关键词: 独立人格;大众化报刊;报人 大众化报纸是对党派报纸的否定,当然这种否定是以报纸商业化运作、获得经济上独立为基础的。这种全新的经营模式使得大众传媒彻底摆脱外界政治力量控制,只服从于传播事业的客
期刊
摘 要:通过对我国《合同法》中可撤销合同相关规定的分析,对撤销权进行了一定的思考并提出了相关的看法和建议。 关键词:可撤销合同;撤销权 按照合同的效力形态进行分类,我国合同法中主要规定了有效合同、无效合同、效力待定的合同以及可撤销的合同。已成立的合同在法律效力上处于何种状态,其衡量的标准是法定的一般生效要件。结合《合同法》第四十四条有关合同生效的规定以及《民法通则》第五十五条关于民事
期刊
摘 要:适应岗位任职教育需要,增强培育军校学员践行当代军人核心价值观的针对性、实效性;必须坚持用科学的理论武装学员头脑,引导军校学员学好理论,夯实理论功底;必须坚持把思想政治建设摆在首位,引导学员改造思想,筑牢思想防线;必须坚持把岗位任职教育融入院校教学的全过程,引导学员适应岗位需要,热爱本职、建功立业。 关键词:任职教育;当代军人核心价值观;针对性;实效性 军委主席胡锦涛同志明确提出,要
期刊
摘 要:院校是道德教育的主阵地。但社会环境对大学生的思想道德建设具有十分重要的引导作用,学校道德教育和社会环境对大学生塑造灵魂,培养理想信念、保证方向都具有不容忽视的作用。在院校道德教育的基础上,充分发挥社会上的一切积极因素同步影响教育,紧密结合,培养学生道德判断能力,引导学生在复杂的社会道德环境中理性掌握并自觉运用道德原则,是大学校园道德教育工作的一个重要课题。 关键词:院校;道德教育;社会;
期刊
摘 要:语言的模糊性分为词义模糊和语义模糊。各种语言中都存在模糊现象,但它存在着很大的民族差异。汉语、俄语和英语三种语言中,相同词汇和不同词汇在模糊性也存在着很大的民族差异。了解模糊语的民族差异,掌握其在不同语体中重要的语用功能,具有重大的现实意义。 关键词:模糊语;民族差异;语用功能 语言的模糊性是语言的基本属性之一。如同语言的社会性、系统性、符号性、生成性、冗余性一样,各种自然语言无不
期刊