JobPlus知识库 工程 电子通信 文章
Struts框架在OA系统开发中的应用

        为了提高应用系统中组件的重用能力和事务控制的灵活性,越来越多的开发人员采用MVC设计模式来分离系统的用户界面、业务逻辑及业务控制。Struts框架结构是MVC设计模式的一种具体实现,它为Web应用提供了一个通用的框架,使得开发人员可以把精力集中在如何解决实际业务问题上。此外,Struts框架提供了许多可供扩展和定制的技术,使得应用程序可以方便地扩展框架,更好地适应用户的实际需求。本文首先介绍了MVC模式的基本思想及Struts的工作原理,并以网上办公系统为例,详细地说明了基于Struts框架进行信息管理系统开发的方法与思路。

        1Struts框架

        Struts是Apache软件基金的一个开源项目,是基于MVC设计模式构建JavaWeb应用程序的框架。Struts框架在构建复杂的Web应用时,允许把应用程序的业务逻辑、控制逻辑和表现逻辑进行分离,从而提高系统灵活性、重用性和可维护性,进而简化Web应用程序的开发。

        1.1MVC模式

        MVC是80年代Smalltalk中使用的一种软件模式,目前已经被广泛使用,是J2EE平台上推荐使用的设计模式。该模式将应用系统的输入、处理和输出按照Model、View和Controller的方式进行彻底的分离,因此应用系统就被分为了三个核心部分:模型、视图和控制器,它们各自处理各自的事务。

        (1)模型(Model):它代表的是应用的业务逻辑,可以对业务流程、状态处理和业务规则的进行制定。业务流程的处理过程对其它部分来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。

        (2)视图(View):它代表的是应用的表示,是与用户交互的部分。它一般进行数据的采集,并把数据交给其它部分处理。

        (3)控制器(Controller):它位于模型与视图之间,控制着它们之间的交互处理过程。控制器把客户端来的请求转换成模型能够理解和执行的请求,并且根据请求选择处理的模型,接着根据执行结果决定下一次显示的视图。

        模型、视图和控制器三者之间的关系。在应用系统开发过程中,通过该设计模式可以将业务逻辑、控制逻辑和表现逻辑分别用用不同的组件实现,以提高代码的重用性和可维护性。

        1.2Struts工作原理

        Struts是一个开放资源框架,是MVC设计模式的一个实现,由一组相互协作的类、Servlet以及JSP标签库组成。Struts的体系结构将Model、View、Controller分别映射到Web应用中的组件。在Struts中Model由Action和ActionForm对象来实现,所有的Action处理器对象都是Action类的子类,Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到相关的View组件以产生响应。通过ActionForm组件对象实现了对View和Model基本的控制器组件是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping和ActionForward这几个组件协调完成。其中Action扮演了真正的业务逻辑的实现者,或者说是业务逻辑调用的接口;而ActionMapping和ActionForward则制定了不同业务逻辑或流程的运行方向,其工作原理如图2所示。

        2网上办公系统的实现

        2.1系统介绍

        网上办公系统是为帮助企事业单位内部员工更好地进行合作或更有效地工作而设计的,旨在实现企事业单位内部的无纸化办公。由于不同单位所需办公系统功能的不同,在此我们选取了网上办公系统中通用的几个模块进行了实现,主要包括:文件夹、待办事项、通讯录、日程安排、文件柜、电子公告、用户设置和系统管理等模块。

        2.2系统实现

        由于系统各功能的实现无论是在步骤上,还是在方法上都是大同小异,所以在此以用户登录为例详细说明该系统的实现方法及思路。在登录窗口当用户输入用户名和密码,点击“登录”按钮,即向Controller发出一个HTTP请求。用户输入的表单参数将以LoginForm的形式封装提交到ActionForward。这个ActionForward调用相应的login执行业务逻辑,完成用户登录功能。以下是登录功能的具体实现过程:

        首先,编写登录相关的业务逻辑代码,其具体代码如下所示:

        publicintlogin(Stringuid,Stringpwd)throwsOAServiceException{

        Sessionsession=null;

        Transactiontx=null;

        Queryquery1=null;

        Queryquery2=null;

        intresult=1;

        try{

        session=HibernateUtil.getSession();

        tx=session.beginTransaction();

        query1=session.createQuery('fromUseruwhereu.uid=:vUid');

        query1.setParameter('vUid',uid);

        if(query1.uniqueResult()==null)return1;

        query2=session.createQuery('fromUseruwhereu.uid=:vUidandu.password=:vPwd');

        query2.setParameter('vUid',uid);

        query2.setParameter('vPwd',pwd);

        Useru=(User)query2.uniqueResult();

        tx.commit();

        return((u==null)?2:3);

        }catch(Exceptione){

        rollBack(tx);

        }finally{

        closeSession(session);}

        returnresult;}

        然后,编写登录要用到的ActionForm类:

        packagecom.lanyu.oa.form;

        ……

        publicclassLoginFormextendsActionForm{

        privateStringuid;

        privateStringpassword;

        ……

        publicActionErrorsvalidate(ActionMappingmapping,HttpServletRequestrequest){

        ActionErrorserrors=newActionErrors();

        if(uid.length()

        errors.add(ActionErrors.GLOBAL_ERROR,newActionError('errors.uid.required'));

        if(password.length()

        errors.add(ActionErrors.GLOBAL_ERROR,newActionError('errors.password.required'));

        returnerrors;}

        }

        接着,编写登录相关的Action类以及相应的方法,登录相关的Action类为com.lanyu.oa.action.UserAction.java,以下是完成登录功能的代码片断:

        publicActionForwardlogin(ActionMappingmapping,ActionFormactionForm,HttpServletRequestrequest,HttpServletResponseresponse){

        ActionForwardforward=null;

        Stringmsg=null;

        Useru=null;

        intresult=0;

        LoginFormform=(LoginForm)actionForm;

        Stringuid=form.getUid();

        Stringpwd=form.getPassword();

        try{

        result=service.login(uid,pwd);

        u=service.getUser(uid);

        }catch(OAServiceExceptione){}

        if(u==null)result=2;

        forward=processResult(result,msg);

        returnforward;

        }

        最后,在配置文件中添加与登录相关的配置。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
235人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序