当前位置:首页>>在线学习>>java培训

Struts应用详解

繁简对译:[]  字体设置:[] 2008-10-17  阅读  次

第十三章  Struts应用详解

      在本章的内容中,将主要介绍Struts的基本知识,对Struts处理用户请求过程的各个环节进行了详细的介绍,并且还介绍在Struts中使用ValidatorTiles等其他框架的基本方法,通过本章内容的学习,读者可以掌握Struts的基本知识,具备Struts开发的基本技能。

13.1  Struts基础知识

      随着Web开发技术的日益成熟,在Web开发领域中出现了许多软件开发框架,Struts就是一种基于MVC经典设计模式的框架,也是目前Web开发中比较成熟的一种开发框架,要使用Struts框架,首先需要了解Struts的工作原理,在本节的内容中,将简单介绍Strut框架的工作原理,并且对Struts开发环境的配置方法做简单的说明

13.1.1  Struts 的工作原理

      Struts是对JSP Model2设计标准的一种实现,下面分别场区那个模型(Model)、视图(View)和控制器(Controller)三个部分介绍Struts的体系结构和工作原理,在一般情况下,Struts框架中的模型是由JavaBean或者EJB构成,视图是有JSP页面组成,控制器是由ActionServletAction实现。(具体内容请参照书。)

13.1.2  Struts的工作流程

      ActionServletStruts中核心的控制器,所有的用户请求都必须通过ActionServlet的处理,而struts-config.xmlStruts中核心的配置文件,在这个文件中配置了用户请求URL和控制器Action的映射关系,ActionServlet就是通过这个配置文件把用户请求发送到对应的控制器中。

13.1.3  Struts的基本配置

      在开发Struts应用程序的时候,需要对开发环境进行简单的配置,其中需要把Struts的类库放到项目WEB-INF/lib文件夹下,而且要把StrutTLD标签库表述文件放到WEB-INF目录下,然后还需要在web.xml中配置ActionServlet这个控制器,从而保证所有的用户请求都能被Struts框架接收并处理。

13.2  简单Struts应用示例

      在本节内容中,将展示一个简单的Struts应用程序,在这个示例程序中,需要向服务器提交一个简单的表单,服务器接收这个表单以后,把处理的结果返回给用户。整个业务逻辑的处理非常简单,这个示例程序的目的也就是向读者展示Struts处理用户请求的具体流程,通过这个示例程序需要读者了解的是如何使用Struts处理用户请求,接下来介绍这个示例程序的具体开发过程。在开发这个示例程序的时候,一般情况下需要以下几个步骤。(具体内容请参照书。)

13.2.1  创建JSP页面

      下面创建向用户提供表单输入的JSP页面,在这个JSP页面中,仅仅包含了一个简单的文本输入域,用来接收用户的输入,(具体内容请参照书。)

13.2.2  创建ActionForm

      在上节内容中,创建了一个简单的JSP页面,在这个JSP页面中提供了一个简答的用户输入表单,在Struts中,需要为每一个用户输入表单提供一个ActionForm对象,当用户提交表单的时候,Struts会自动把用户提交的表单信息保存在对应的AcionForm中,在这个示例程序中,用户提交的表单仅有一条输入信息,(具体内容请参照书。)

13.2.3  创建Action

      Struts中使用Action处理用户的请求,在这个示例程序中,可以使用下面的Action来处理用户提交的表单信息。

13.2.4  创建JavaBean模型组件

      在上面的Action中,调用了一个JavaBean,在这里仅仅是为了模拟在Action调用JavaBean模型组件完成业务逻辑处理的方法,在这个JavaBean中并没有提供具体的业务逻辑,仅仅是展示使用,这个JavaBean的具体代码如下。(具体内容请参照书。)

13.2.5  资源文件

      在这个示例程序的JSP页面中,多次用到Struts中的资源文件,在本质上这个资源文件就是简单的属性文件,通过名值对应提供具体的配置内容,下面就是在这个示例程序中用到的资源文件。(具体内容请参照书。)

13.2.6  基本配置信息

      struts-config.xmlStruts配置文件中的核心配置文件,在这个配置文件中可以配置用户请求URL和控制器Action之间的映射信息,ActionServlet就是通过这个配置文件中完成用户请求的转发工作,下面就是这个示例程序中struts-config.xml配置文件的具体内容。(具体内容请参照书。)

13.2.7  运行结果

      (具体内容请参照书。)

13.3  Struts中的表单处理器ActionForm

      Web应用程序的开发过程中,开发人员需要花费大量的时间和精力处理表单问题,有的时候是通过表单提交一些新的数据,有的是通过表单修改数据,所有这些表单的处理在传统的Web开发中都是非常复杂的。在本节中将介绍Struts中的表单处理组件ActionForm

13.3.1  ActionForm简介

      在传统的Web应用程序开发中,繁杂的表单处理工作给开发人员带来了巨大的困难,在传统的Web开发语言中,没有组件可以自动收集用户输入的表单内容,开发人员不得不在程序中手工提取表单的值。例如在表单中有这样一个文本输入域。

      <input type=text name=password>(具体内容请参照书。)

13.3.2  ActionForm基本功能

      ActionForm不仅实现了表单字段保存的功能,而且还提供了数据缓冲、数据验证的功能。

      在传统的Web开发中,验证用户提交的表单数据可以采取两种方法,一种是在表单提交到服务器后,在服务器端使用JavaBean来进行验证,在这种验证方法中,如果数据验证失败以后,需要返回原来的页面,但是用户提交的所有表单数据已经被刷新,除非采用特殊的程序处理,否则用户得到的会是一个全新的表单,前面输入的任何数据都没有了。

13.4  Struts中的控制器

      ActionStruts中的主要控制器,在本节的内容中,将介绍Action的工作原理和基本使用方法,同时对DispatchActionLookupDispatchAction这两个控制器的使用方法进行简单的介绍,并通过两个示例程序展示这两个控制器的基本使用方法。

13.4.1  Action简介

      Struts中,所有的用户请求都会经过ActionServlet的处理,而实际的工作是交给Action对象来处理的,ActionServlet可以从配置文件中创建ActionMapping对象,并从ActionMapping对象中可以找到要使用的Action,然后将用户的请求转交给Action

13.4.2  Action的基本使用方法

      在开发Action的时候,需要继承org.apache.struts.action.Action这个类,在子类中加入所需的业务逻辑处理,这些子类会返回ActionForward对象,ActionServlet接受这个对象,把页面转发到指定页面,从而把用户请求的结果发送到对应页面。(具体内容请参照书。)

13.4.3  DispatchAction的使用方法

      在前面的介绍中,为每一个动作提供一个Action类,但是在很多时候,一些相似的动作是可以在统一个模块中进行处理的,但是在StrutsAction类中,只提供一个execute()方法,一个用户请求URL只能对应一个Servlet,在Struts中提供了另一个控制器类org.apache.struts.actions.DispatchAction,这个类可以将完成相关业务逻辑所需要的方法集中在一个DispatchAction类中,在继承DispatchAction类之后,不是重写execute()方法,而是编写自己需要的方法,在不同的方法中处理不同的动作

13.4.4  LookupDispatchAction的使用方法

      DispatchAction中可以在同一个控制器中处理多个动作,这个时候只能是通过URL调用控制器,控制器根据用户提交的参数决定调用哪个方法来处理用户的请求。这种情况下不能通过表单提交用户的请求信息。(具体内容请参照书。)

13.5  Struts中的页面转发控制

      Struts提供了ActionForwardActionMapping这两个类用来控制页面转发,在本节内容中将简单介绍这两个类的基本使用方法。

13.5.1  ActionForward简介

      在使用Struts开发的Web应用程序中,Action在完成用户逻辑处理以后,需要把处理结果展示给用户,这个时候就需要程序控制页面的转发,在Struts中使用ActionForward对象控制程序的转向,ActionForward对象是一种配置对象,代表了一般的Web资源,可以是JSP页面、Servlet以及其他ActionActionForward对象映射的是Struts配置文件struts-config.xml中的<forward>元素,在这个元素中封装了目标页面的URI

13.5.2  使用ActionForward传递参数

      ActionForward不仅承担着控制程序转发的任务,而且还可以在转发页面的时候同时传递参数,在ActionForward中,可以在struts-config.xml定义<forward>元素的时候指定参数以及内容。也可以在程序中动态添加参数。下面将介绍ActionForward传递参数的更多用法。

13.5.3  ActionMapping简介

      struts-config.xml配置文件中,每一个<action>元素都对应一个ActionMapping对象,当用户请求被ActionServlet接收以后,ActionServlet会根据用户请求URL以及<action>元素设定的path属性确定对应的ActionMapping对象,ActionMapping对象会告诉ActionServlet使用哪个Action对象处理用户请求。

13.6  Struts标签库

      为了方便开发人员使用Struts开发Web应用系统,在Struts框架中提供了内置的标签库,使用这些标签库可以方便构造表示层的JSP页面。在前面章节中介绍的示例程序中,已经使用到一部分Struts标签,虽然目前很大一部分的Web程序仍然采用传统的HTML标记来实现表示层的页面,但是在Struts应用的开发过程中,Struts标签的使用还是不可避免的,在本章的接下来的内容中,将简单介绍Struts中常用的基本标签库。

13.6.1  html标签

      HTML标签是Struts标签中基本的标签。Struts框架的HTML标签库中提供了对应普通HTML页面中的标签元素。接下来介绍Struts标签中的常用的标签。(具体内容请参照书。)

13.6.2  bean标签

      Strutsbean标签库用来在JSP页面中处理JavaBean,不仅可以访问已经存在的JavaBean,而且还可以定义新的JavaBean。接下来介绍bean标签库中常用的标签。

13.6.3  logic标签

      在传统的处理方式中,是用脚本控制页面中的逻辑,在Struts中提供logic标签库控制页面的基本逻辑处理。接下来介绍logic标签库中常用的标签(具体内容请参照书。)

13.7  Struts中使用Validator验证框架

      在使用ActionForm时,可以把验证用户表单输入的工作放在ActionFormvailidate()方法中,在Struts中,可以整合Validator验证框架进行表单的输入验证工作。在接下来的内容中,将介绍Struts中使用Validator验证框架的基本方法。

13.7.1  Validator验证框架的配置

      在前面章节中使用MyEclipse配置Struts开发环境的时候,已经默认把Validator框架的类库文件拷贝到项目的WEB-INF/lib中,而且还把Validator框架需要的validator-rules.xml文件拷贝到WEB-INF目录中。同时如果要使用Validator,还需要在WEB-INF目录下添加Validator验证规则文件,在这里我们需要在WEB-INF目录下添加一个validation.xml文件。(具体内容请参照书。)

13.7.2  Validator的内置验证器

      Validator框架中内置了一些验证器,例如非空验证、Email验证、整型数据验证、最大长度验证、最小长度验证等,这些验证方法都是Validator框架中内置的,可以调用这些验证器对用户提交的表单进行验证。下面将简单介绍这几种内置验证器的基本使用方法。

13.7.3  Validator验证框架的简单示例

      在下面的示例程序中,展示了Validator中内置的几个验证器的基本使用方法,下面就是这个示例程序中的JSP页面,在这个页面中提供了一个简单的用户注册表单,在这个示例程序中将对用户输入的表单信息进行验证,(具体内容请参照书。)

13.8  Struts中使用Tiles

      Tiles提供一个类似桌面应用程序版面管理的机制,通过配置文件可以定义版面配置,以及其中需要插入的内容网页,在Tiles中内容网页可以和配置文件相分离,通过使用Tiles可以随时更换内容网页,从而可以重用版面配置文件。在下面的内容中,将介绍在Struts中使用Tiles框架的基本方法。

13.8.1  Struts中配置Tiles框架

      Struts中使用Tiles框架的方法是非常方便的。在前面使用MyEclipse配置Struts开发环境的时候,已经自动吧Tiles需要用到的标签库描述文件struts-tiles.tld拷贝在项目的WEB-INF目录下,现在还需要在WEB-INF目录下添加一个tiles-defns.xml文件,在这个文件中描述了Tiles框架的配置信息。

13.8.2  创建模版页面

      在下面的示例程序中,将展示Tiles模版的基本使用方法,在使用Tiles框架的时候,首先需要创建Tiles模版,然后在需要使用这个模版的时候,直接调用即可。(具体内容请参照书。)

13.8.3  使用模版页面

      在上一章节中,创建了个名为mainlayout的页面布局,定义好这个布局以后,就可以在后就可以在程序中使用这个布局,在这个布局中,已经指定了headerfooter的内容,在使用这个布局的时候,只需要添加网页中间部分的主体内容即可。(具体内容请参照书。)

13.9 小结

      在本章内容中,介绍了Struts的基本知识,在目前的Web开发中,Struts已经成了MVC事实上的标准大量的Web程序使用Struts进行开发,所以读者有必要掌握这项基本的技术,本章中不仅介绍了Struts的基本工作原理、基本使用方法,而且还介绍了在Struts中如何整合第三方的框架,另外,在本章的内容中,对于比较复杂的知识点都提供了具体的示例展示,读者可以通过这些示例程序深入了解对应的知识点,并逐步在自己的项目中学习使用。

 

打印 收藏 关闭