Struts配置文件

weblgx 贡献于2011-05-06

作者 yav.hi  创建于2008-11-19 12:00:00   修改者niit  修改于2008-11-19 12:01:00字数24870

文档摘要:Struts框架在启动时会读入其配置文件,根据它来创建和配置各种Struts组件。Struts配置文件使得开发者可以灵活地组装和配置各个组件,提高了应用软件的可扩展性和灵活性,可以避免硬编码。Struts配置文件是基于XML的。
关键词:

Struts配置文件 Struts框架在启动时会读入其配置文件,根据它来创建和配置各种Struts组件。Struts配置文件使得开发者可以灵活地组装和配置各个组件,提高了应用软件的可扩展性和灵活性,可以避免硬编码。Struts配置文件是基于XML的。   ·1。org.apache.struts.config包   在Struts1.1中加入了org.apache.struts.config包。在Struts应用启动时,会把Struts配置文件中的配置信息读入到内存中,并把他们存放在cofnig包中相关JavaBean类的实例中。 org.apache.struts.config包中的每一个类都和Struts配置文件中特定的配置元素对应。 在Struts框架完成了对配置文件的验证和解析后,就把配置文件中的信息存放在这些类的实例中。这些类的实例可以充当配置信息的运行时容器,Struts组件可以方便地通过他们来获取配置信息。 org.apache.struts.config.ModuleConfig在Struts框架中扮演了十分重要的角色。它是整个org.apache.struts.config包的核心,在Struts应用运行时用来存放整个Struts应用的配置信息。如果有多个子应用,每个子应用都会有一个ModuleConfig对象。ModuleConfig和Struts配置文件的根元素对应。根元素中包含等一系列子元素,因此ModuleConfig中包含了和每个子元素对应的配置类实例。 org.apache.struts.config.ConfigRuleSet类的功能不同于其他类,它包含了解析Struts配置文件所需要的一组规则。在应用启动时,该类负责构造org.apache.struts.config包中其他用于保存配置信息的JavaBean类的实例。 下面分别介绍Struts配置文件中每个元素的用法。   ·2。元素 元素是Struts配置文件的根元素,和它对应的配置类为org.apache.struts.config.ModuleConfig类。元素有8个子元素。 在Struts配置文件中,必须按照它的DTD指定的先后顺序来配置元素的各个子元素,如果颠倒了这些子元素在配置文件中的顺序,在Struts应用启动时就会生成XML解析错误。   ·3。元素 元素用来配置应用所需要的数据源。数据源负责建立和特定数据库的连接,许多数据源采用连接池机制实现,以便提高数据库访问性能。Java语言提供了javax.sql.DataSource接口,所有的数据源必须实现该接口。许多应用服务器和Web容器提供了内在的数据源组件,很多数据库厂商也提供了数据源的实现。 元素包含零个,一个或多个子元素。元素用于配置特定的数据源,它可以包含多个子元素。元素用于设置数据源的各种属性。 元素的type属性用来指定数据源的实现类。开发者应该根据实际应用的需要来选用合适的数据源实现。 配置了数据源后,就可以在Action类中访问数据源。在org.apache.struts.action.Action类中定义了getDataSource(HttpRequest)方法,它用于获取数据源对象的引用。 也可以在配置文件中声明多个数据源,此时需要为每一个数据源分配唯一的key值,通过该值来标识特定的数据源。   ·4。元素 元素用来配置多个ActionForm Bean。元素包含零个或多个子元素。每个元素又包含多个属性。 元素的属性 属性 描述 className 指定和元素对应的配置类,默认值为org.apache.struts.config.FormBeanConfig。如果在这里设置自定义的类,该类必须扩展FormBeanConfig类 name 指定该ActionForm Bean的唯一标识符,整个Struts框架用该标识符来引用这个bean。该属性是必需的。 type 指定ActionForm类的完整类名(类的报名也包含在内),该属性是必需的     如果配置动态ActionForm Bean,还必须配置元素的子元素。元素用来指定表单字段,它有四个属性。 元素的属性 属性 描述 className 指定和元素对应的配置类,默认值为org.apache.struts.config.FormPropertyConfig initial 以字符串的形式设置表单字段的初始值。如果没有设置该属性,则基本类型的表单字段的默认值为0,对象类型的表单字段的默认值为null name 指定表单字段的名字。该属性是必需的 type 指定表单字段的类型。如果表单资源为Java类,必须给出完整的类名。该属性是必需的。   ·5。元素 元素用于配置异常处理。元素可以包含零个或者多个元素。 元素用来设置Java异常和异常处理类org.apache.struts.action.ExceptionHandler之间的映射。 元素的属性 属性 描述 className 指定和元素对应的配置类。默认值为 org.apache.struts.config.ExceptionConfig handler 指定异常处理类。默认值为org.apache.struts.action.ExceptionHandler key 指定在Resource Bundle中描述该异常的消息key path 指定当异常发生时的转发路径 scope 指定ActionMessages实例的存放范围,可选值包括request和session,此项的默认值为request type 指定所需处理的异常类的名字。此项是必需的 bundle 指定Resource Bundle   ·6。元素 元素用来声明全局的转发关系。元素由零个或者多个元素组成。元素用于把一个逻辑名映射到特定的URL。通过这种方式,Action类或者JSP文件无需要指定实际的URL,只要指定逻辑名就能实现请求转发或者重定向,这可是减弱控制组件和视图组件之间的耦合,并且有助于维护JSP文件。 元素的属性 属性 描述 className 和元素对应的配置类,默认值为org.apache.struts.action.ActionForard contextRelative 如果此项为true,表示当path属性以“/”开头时,给出的是相对于当前上下文的URL。此项的默认值为false name 转发路径的逻辑名。此项是必需的 path 指定转发或重定向的URL。此项是必需的,必需以“/”开头。当contextRelative属性为false时,表示URL路径相对于当前应用(application-relative);当contextRelative属性为true时,表示URL路径相对于当前上下文(context-relative) redirect 当此项为true时,表示执行重定向操作;当此项为false时,表示执行请求转发操作。此项默认值为false   ·7。元素 元素包含零个或者多个元素。元素描述了从特定的请求路径到相应的Action类的映射。 在元素中可以包含多个子元素,他们分别配置局部的异常处理及请求转发仅被当前的Action所访问。 在元素中定义的子元素代表全局的异常配置。在元素中定义的子元素代表全局的请求转发。在不同位置配置元素的语法和属性是一样的。 元素的属性 属性 描述 attribute 设置和Action关联的ActionForm Bean在request或session范围内的属性key。例如,假定Form Bean存在于request范围内,并且此项为“myBean”,那么request.getAttribute(“MyBean”)就可以返回该Bean的实例。此项为可选项。 className 和元素对应的配置元素。默认值为org.apache.struts.action.ActionMapping forward 指定转发的URL路径 include 指定包含的URL路径 input 指定包含输入表单的URL路径。当表单验证失败时,将把请求转发到该URL name 指定和该Action关联的ActionForm Bean的名字。该名字必需在元素中定义过。此项是可选项 path 指定访问Action的路径,它以“/”开头,没有扩展名 parameter 指定Action的配置参数。在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数 roles 指定允许调用该Action的安全角色。多个角色之间以逗号隔开。在处理请求时,RequestProcessor会根据该配置项来决定用户是否有调用Action的权限 scope 指定ActionForm Bean的存在范围,可选值为request和session。默认值为session type 指定Action类的完整类名 unknown 如果此项为true,表示可以处理用户发出的所有无效的Action URL。默认值为false validate 指定是否要先调用ActionForm Bean的validate()方法。默认值为true   提示:元素的forward、include和type属性相互排斥,也就是说只能设置其中的一项。forward属性的作用和org.apache.struts.actions.ForwardAction类相同。Include属性的作用和org.apache.struts.actions.IncludeAction类相同。   如果在元素中定义了局部的元素,它的优先级别高于全局的元素。 的forward属性和子元素是两个不同的概念。Forward属性指定和path属性匹配的请求转发路径。   ·8。元素 元素用于配置ActionServlet。 元素的属性 属性 描述 bufferSize 指定上载文件的输入缓冲的大小。该属性为可选项,默认值为4096。 className 指定和元素对应的配置类。默认值为org.apache.struts.config.ControllerConfig。 contentType 指定响应结果的内容类型和字符编码。该属性为可选项,默认值为text/html。如果在Action和JSP网页中也设置了内容类型和字符编码,将会覆盖该设置 locale 指定是否把Locale对象保存到当前用户的Session中。默认值为false processorClass 指定负责处理请求的Java类的完整类名。默认值为org.apache.struts.action.RequestProcessor。如果把此项设置为自定义的类,那么应该保持该类扩展了org.apache.struts.action.RequestProcessor类 tempDir 指定处理文件上传的临时目录。如果此项没有设置,将采用Servlet容器为Web应用分配的临时工作目录 nochache 如果为true,在响应结果中将加入特定的头参数:Pragma,Cache-Control和Expires,防止页面被存储在客户浏览器的缓存中。默认值为false   如果应用包含多个子应用,可以在每个子应用的Struts配置文件中配置元素。这样,尽管这些子应用共享同一个ActionServlet对象,但是它们可以使用不同的RequestProcessor类。   ·9。元素 元素用来配置Resource Bundle,Resource Bundle用于存放本地化消息文本。 元素的属性 属性 描述 className 和元素对应的配置类。默认值为org.apache.struts.config.MessageResourcesConfig factory 指定消息资源的工厂类。默认值为org.apache.struts.util.PropertyMessageResourcesFactory类 key 指定Resource Bundle存放在ServletContext对象中时采用的属性key。默认值为由Globals.MESSAGES_KEY定义的字符串常量。只允许有一个Resource Bundle采用默认的属性key null 指定MessageResources类如何处理未知的消息key。如果此项为true,将返回空字符串。如果此项为false,将返回类似“???global.label.missing???”的字符串。该属性为可选项,默认值为true parameter 指定Resource Bundle的消息资源文件名。   许多Struts客户化标签都通过bundle属性来指定Resource Bundle,标签的bundle属性和元素的key属性匹配。   ·10。元素 元素用于配置Struts插件。 元素的属性 属性 描述 className 指定Struts插件类。插件类必需实现org.apache.struts.action.PlugIn接口   ·11。配置多应用模块 Struts 1.1支持多应用模块,即同一个应用包含多个子应用,每个子应用可以处理相关的一组功能。 所有的子应用都共享同一个ActionServlet实例,但每个子应用都有单独的配置文件。把应用划分成多个子应用模块包含一下步骤: (1)       为每个子应用传见单独的Struts配置文件。 (2)       在web.xml的ActionServlet的配置代码中添加每个子应用信息。 (3)       采用元素或SwitchAction类来实现子应用之间的切换。                                         ------------http://blog.csdn.net/ayace/archive/2005/04/10/342472.aspx Structs的基本配置 第一章Structs的基本配置 1.为Structs应用配置Web.xml文件 第一步:配置ActionServlet   action   org.appache.structs.ActionServlet    action    *.do 注意:不管应用中包含多少个子应用,都只需配置一个ActionServlet,因为ActionServlet支持多线程,目前的Structs框架只允许在应用中配置一个ActionServlet。 第二步:初始化参数对Servlet的运行环境进行初始化配置。     action     org.appache.structs.ActionServlet      config /WEB-INF/structs-config.xml   表2-1. Struts1.1中用到的初始化参数 参数名    含义/默认值 config     以相对路径的方式指明Struts应用程序的配置文件位置。如不设置,则默认值为/WEB-INF/struts-config.xml。  config/sub1     以相对路径的方式指明子应用程序的配置文件位置,一般来说,很少用到子应用程序,在此不多描述。 debug     设置Servlet的debug级别,控制日志记录的详细程度。默认为0,记录相对最少的日志信息。  detail     设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过该设置,可以查看不同详细等级的解析日志。默认为0,记录相对最少的日志信息。 第三步:配置欢迎清单    当客户访问Web应用时,如果仅仅给出Web应用的Root URL,没用指定具体的文件名,Web容器会自动调用Web应用的欢迎文件。               welcome.jsp            index.jsp    说明:可以包含多个子元素,首先查找第一个文件。    由于元素中不能配置Servlet映射,因此不能直接把Structs的Action作为欢迎文件,可以采用一种变通的方法来实现在欢迎文件中调用Structs Action。首先,在Structs配置文件中为被调用的Action创建一个全局的转发项,例如:             创建一个welcome.jsp的文件 最后在web.xml文件中把welcome.jsp文件配置为欢迎文件,代码如下:                 welcome.jsp       第四步:配置错误处理          404     /commom/404.jsp     505     /commom/505.jsp    也可以为Web容器捕获的Java异常配置,需要设置子元素,它用于指定Java异常类。Web容器可能捕获如下异常:   RuntimeException或Error   ServletException或它的子类  IOException或它的子类     java.io.IOException     /common/system_ioerror.jsp 第五步:配置Structs标签库     使用客户化的标签库,要配置它们            /WEB-INF/structs-html.tld        /WEB-INF/structs-html.tld     用于指定标签库的相对或者绝对URI地址,Web应用根据这一URI来访问标签库。 指定标签描述文件在文件资源系统中的物理位置。 2 Structs配置文件      Structs框架在启动时会读入其配置文件,根据它来创建和配置各种Structs组件。 1元素      元素是Structs配置文件的根元素,元素有8个子元素。它的DTD定义如下:    在Struts配置中,必须按照以上的DTD指定的先后顺序来配置元素的各个子元素,如果颠倒了这些元素的配置文件中的位置,在Structs应用启动时会生成错误。 元素                                                                                         元素包含零个、一个或者多个子元素,用于配置特定的数据源,它可以包含多个子元素,用于设置数据源的各种属性。 。。。 配置了数据源后,就可以在Action类中访问数据源,在org.apache.structs.action.Action类中定义了getDataSource(HttpRequrst)方法,它用于获取数据源对象的引用。    DataSource  dataSource;    Connection  connection;        dataSource =getDataSource(request);        connection=dataSource.getConnection(); 也可以在配置文件中声明多个数据源,此时需要为每一个数据源分配唯一的key值,通过改值来标识特定的数据源。 2元素    元素用来配置多个ActionForm Bean,包含多个子元素,,每个包含多个属性,ClassName , name,type              注意:配置动态ActionForm Bean,还必须配置元素的元素。                                                   3元素 用于配置异常处理,元素可以包含零个或者多个元素。 元素用来设置java异常和异常处理类org.apache.structs.action,Exception  Hander之间的映射。 4元素      元素用来声明全局的转发关系,有零个或多个元素组成。元素用于把一个逻辑映射到特定的URL  属性    描  述 className    和元素对应的配置类,默认为org.apache.structs.action.ActionForWard name    转发路径的逻辑名,此项时必须的 path    指定或者重定向的URI。此项时必须的,必须以”/”开头 redirect    此项是true,表示是执行重定向的操作,此项是false时,表示请求转发。           如果jsp1.jsp把请求转发给Action1,可以使用以下代码:   或者 如果Action1的execute()方法把请求转发给JSP2.jsp,可以使用一下代码: return(mapping.findForward(“forward2”)) 5元素    元素包含零个或者多个元素。元素描述了从特定的请求路径到相应的Action类的映射。 6元素   元素用于配置ActionServlet。 7< message-resources>元素 元素用于配置Resource Bundle,Resource Budle用于存放本地化消息文件。 Structs标签 HTML标签 标签名    描述 base    包装HTML的base元素 button    包装HTML的 button类型的input元素 cancel    包装HTML cancel 按钮 checkbox    包装HTML checkbox 类型的输入域 errors    有条件地显示一些error消息,显示ActionErrors信息 file    包装HTML文件上传输入域 form    定义HTML form 元素 frame    包装HTML frame 元素 hidden    包装HTML hidden 输入域 html    包装 HTML中的 html 元素 image    包装 "image"类型的输入域 img    包装HTML的 img 元素 javascript    包装根据ValidatorPlugIn提供的校验规则所提供的javascript校验脚本  link    包装超链接 messages    有条件地显示一些提示信息,显示ActionMessages信息 multibox    包装多选输入框 option    包装一个选择输入框 options    包装一批选择输入框 optionsCollection    包装一批选择输入框集 password    包装密文输入框 radio    包装单选输入框 reset    包装“重置”功能的按钮 rewrite    包装一个URL select    包装一个选择输入框 submit    包装一个提交按钮 text    包装一个文本输入框  textarea    包装一个备注输入框 ActionForm ActionForm 的要求 创建一个ActionForm 并不困难,但是你的类必须符合一些要求: ActionForm 必须扩展自org.apache.struts.ActionForm。基类ActionForm 是不能实 例化的。 ActionForm 必须为每个应该从请求中收集的HTML控件定义一个公共属性。 (Struts 1.0 要求每个属性都要mutator 和accessor 。Struts 1.1 则没有如此严格) ActionForm还可能要符合一些可选的要求: 如果你要求ActionForm 在传递属性到Action之前校验它们,你就必须实现validate 方法; 如果想在组装前初始化属性,必须实现reset , 它在ActionForm 组装前被调用; 动态ActionForm ActionForm 作为类型转换器 ActionForm的一个强制点是应该使用String 和boolean属性。实际上,这意味着属性 必须得从一种转换到另一种类型。大部分应用也需要一些属性,比如电话号码或者数量,以 一种格式化的方式出现。核心Java 包提供一些工具来做这种事情,但是要清楚地将他们集 成到应用中仍然是一个挑战。 Struts 开发人员经常在ActionForm中包含helper方法,来进行类型转换。helper 方法 可以有很多种实现方式,这我们在5.6种叙述。 5.2.6 ActionForm 作为防火墙 当请求提交时,ActionServlet 使用一个自动组装机制来从请求参数中设置请求的 ActionForm属性。这让你可以通过控制哪个ActionForm 属性被暴露来控制哪个请求参数 是可接受的。这也意味着如果你的ActionForm 的粗心设计你可能失去控制哪个参数可以接 受的能力。ActionForm 一定不能包含看起来像是一个JavaBean 属性,但不能从HTTP 请 求设置的属性方法。 5.3.4 ActionForm 可以嵌套其它bean 因为Struts 标签扩展和自动组装机制都支持点号语法来从ActionForm访问其它 bean。这是一个方便的方式,可以通过ActionForm来组装存在的bean。在JSP 页面, 你可 以象这样引用一个嵌套的bean: 5.7.2 分发(Dispatch ) Struts 开发人员通常使用同一个Action处理相关的操作。一个通常做法来选择操作是在 HTML表单中使用隐藏属性。BaseForm 的dispatch 属性也可用作这个目的: public void setDispatch(String dispatch); public String getDispatch(); Struts 配置提供连个级别嵌套的ActionForward:   Global (全局) ActionForward对整个应用中的所有Action 对象均有效;   Local (局部) ActionForward 则在ActionMapping 元素中定义。仅对那些在这个 ActionMapping中调用的Action对象有效。 从Action 对象内部来看,forward 通常像这样来选择: ActionForward forward = mapping.findForward("continue"); 第一章Structs的基本配置 1.为Structs应用配置Web.xml文件 第一步:配置ActionServlet   action   org.appache.structs.ActionServlet    action    *.do 注意:不管应用中包含多少个子应用,都只需配置一个ActionServlet,因为ActionServlet支持多线程,目前的Structs框架只允许在应用中配置一个ActionServlet。 第二步:初始化参数对Servlet的运行环境进行初始化配置。     action     org.appache.structs.ActionServlet      config /WEB-INF/structs-config.xml   表2-1. Struts1.1中用到的初始化参数 参数名    含义/默认值 config     以相对路径的方式指明Struts应用程序的配置文件位置。如不设置,则默认值为/WEB-INF/struts-config.xml。  config/sub1     以相对路径的方式指明子应用程序的配置文件位置,一般来说,很少用到子应用程序,在此不多描述。 debug     设置Servlet的debug级别,控制日志记录的详细程度。默认为0,记录相对最少的日志信息。  detail     设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过该设置,可以查看不同详细等级的解析日志。默认为0,记录相对最少的日志信息。 第三步:配置欢迎清单    当客户访问Web应用时,如果仅仅给出Web应用的Root URL,没用指定具体的文件名,Web容器会自动调用Web应用的欢迎文件。               welcome.jsp            index.jsp    说明:可以包含多个子元素,首先查找第一个文件。    由于元素中不能配置Servlet映射,因此不能直接把Structs的Action作为欢迎文件,可以采用一种变通的方法来实现在欢迎文件中调用Structs Action。首先,在Structs配置文件中为被调用的Action创建一个全局的转发项,例如:             创建一个welcome.jsp的文件 最后在web.xml文件中把welcome.jsp文件配置为欢迎文件,代码如下:                 welcome.jsp       第四步:配置错误处理          404     /commom/404.jsp     505     /commom/505.jsp    也可以为Web容器捕获的Java异常配置,需要设置子元素,它用于指定Java异常类。Web容器可能捕获如下异常:   RuntimeException或Error   ServletException或它的子类  IOException或它的子类     java.io.IOException     /common/system_ioerror.jsp 第五步:配置Structs标签库     使用客户化的标签库,要配置它们            /WEB-INF/structs-html.tld        /WEB-INF/structs-html.tld     用于指定标签库的相对或者绝对URI地址,Web应用根据这一URI来访问标签库。 指定标签描述文件在文件资源系统中的物理位置。 2 Structs配置文件      Structs框架在启动时会读入其配置文件,根据它来创建和配置各种Structs组件。 1元素      元素是Structs配置文件的根元素,元素有8个子元素。它的DTD定义如下:    在Struts配置中,必须按照以上的DTD指定的先后顺序来配置元素的各个子元素,如果颠倒了这些元素的配置文件中的位置,在Structs应用启动时会生成错误。 元素                                                                                         元素包含零个、一个或者多个子元素,用于配置特定的数据源,它可以包含多个子元素,用于设置数据源的各种属性。 。。。 配置了数据源后,就可以在Action类中访问数据源,在org.apache.structs.action.Action类中定义了getDataSource(HttpRequrst)方法,它用于获取数据源对象的引用。    DataSource  dataSource;    Connection  connection;        dataSource =getDataSource(request);        connection=dataSource.getConnection(); 也可以在配置文件中声明多个数据源,此时需要为每一个数据源分配唯一的key值,通过改值来标识特定的数据源。 2元素    元素用来配置多个ActionForm Bean,包含多个子元素,,每个包含多个属性,ClassName , name,type              注意:配置动态ActionForm Bean,还必须配置元素的元素。                                                   3元素 用于配置异常处理,元素可以包含零个或者多个元素。 元素用来设置java异常和异常处理类org.apache.structs.action,Exception  Hander之间的映射。 4元素      元素用来声明全局的转发关系,有零个或多个元素组成。元素用于把一个逻辑映射到特定的URL  属性    描  述 className    和元素对应的配置类,默认为org.apache.structs.action.ActionForWard name    转发路径的逻辑名,此项时必须的 path    指定或者重定向的URI。此项时必须的,必须以”/”开头 redirect    此项是true,表示是执行重定向的操作,此项是false时,表示请求转发。           如果jsp1.jsp把请求转发给Action1,可以使用以下代码:   或者 如果Action1的execute()方法把请求转发给JSP2.jsp,可以使用一下代码: return(mapping.findForward(“forward2”)) 5元素    元素包含零个或者多个元素。元素描述了从特定的请求路径到相应的Action类的映射。 6元素   元素用于配置ActionServlet。 7< message-resources>元素 元素用于配置Resource Bundle,Resource Budle用于存放本地化消息文件。 Structs标签 HTML标签 标签名    描述 base    包装HTML的base元素 button    包装HTML的 button类型的input元素 cancel    包装HTML cancel 按钮 checkbox    包装HTML checkbox 类型的输入域 errors    有条件地显示一些error消息,显示ActionErrors信息 file    包装HTML文件上传输入域 form    定义HTML form 元素 frame    包装HTML frame 元素 hidden    包装HTML hidden 输入域 html    包装 HTML中的 html 元素 image    包装 "image"类型的输入域 img    包装HTML的 img 元素 javascript    包装根据ValidatorPlugIn提供的校验规则所提供的javascript校验脚本  link    包装超链接 messages    有条件地显示一些提示信息,显示ActionMessages信息 multibox    包装多选输入框 option    包装一个选择输入框 options    包装一批选择输入框 optionsCollection    包装一批选择输入框集 password    包装密文输入框 radio    包装单选输入框 reset    包装“重置”功能的按钮 rewrite    包装一个URL select    包装一个选择输入框 submit    包装一个提交按钮 text    包装一个文本输入框  textarea    包装一个备注输入框 ActionForm ActionForm 的要求 创建一个ActionForm 并不困难,但是你的类必须符合一些要求: ActionForm 必须扩展自org.apache.struts.ActionForm。基类ActionForm 是不能实 例化的。 ActionForm 必须为每个应该从请求中收集的HTML控件定义一个公共属性。 (Struts 1.0 要求每个属性都要mutator 和accessor 。Struts 1.1 则没有如此严格) ActionForm还可能要符合一些可选的要求: 如果你要求ActionForm 在传递属性到Action之前校验它们,你就必须实现validate 方法; 如果想在组装前初始化属性,必须实现reset , 它在ActionForm 组装前被调用; 动态ActionForm ActionForm 作为类型转换器 ActionForm的一个强制点是应该使用String 和boolean属性。实际上,这意味着属性 必须得从一种转换到另一种类型。大部分应用也需要一些属性,比如电话号码或者数量,以 一种格式化的方式出现。核心Java 包提供一些工具来做这种事情,但是要清楚地将他们集 成到应用中仍然是一个挑战。 Struts 开发人员经常在ActionForm中包含helper方法,来进行类型转换。helper 方法 可以有很多种实现方式,这我们在5.6种叙述。 5.2.6 ActionForm 作为防火墙 当请求提交时,ActionServlet 使用一个自动组装机制来从请求参数中设置请求的 ActionForm属性。这让你可以通过控制哪个ActionForm 属性被暴露来控制哪个请求参数 是可接受的。这也意味着如果你的ActionForm 的粗心设计你可能失去控制哪个参数可以接 受的能力。ActionForm 一定不能包含看起来像是一个JavaBean 属性,但不能从HTTP 请 求设置的属性方法。 5.3.4 ActionForm 可以嵌套其它bean 因为Struts 标签扩展和自动组装机制都支持点号语法来从ActionForm访问其它 bean。这是一个方便的方式,可以通过ActionForm来组装存在的bean。在JSP 页面, 你可 以象这样引用一个嵌套的bean: 5.7.2 分发(Dispatch ) Struts 开发人员通常使用同一个Action处理相关的操作。一个通常做法来选择操作是在 HTML表单中使用隐藏属性。BaseForm 的dispatch 属性也可用作这个目的: public void setDispatch(String dispatch); public String getDispatch(); Struts 配置提供连个级别嵌套的ActionForward:   Global (全局) ActionForward对整个应用中的所有Action 对象均有效;   Local (局部) ActionForward 则在ActionMapping 元素中定义。仅对那些在这个 ActionMapping中调用的Action对象有效。 从Action 对象内部来看,forward 通常像这样来选择: ActionForward forward = mapping.findForward("continue"); Struts配置文件详解,web.xml以及struts-cofig.xml,以及struts-cofig.xml中各个标签的作用 Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web应用的而struts-config.xml文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称的. }2}2#* Web应用的发布描述文件:web应用发布描述文件可以在应用开着者,发布者和组装者之间传递配置信息,Web容器在启动的时候从该文件中读取配置信息,根据它来装载和配置web应用.文档类型定义DTD对XML文档的格式做了定义,DTD吧XML文档划分为元素,属性,实体每一种XML文档都有独自的DTD文件.可以从网上下载.元素是web.xml的根元素,其他元素必须嵌入在元素之内.要注意的是子元素也是有顺序的比如必须是首先,然后最后. &^TnRZ=4 h}BTm8'#} 为Struts应用配置Web.xml文件:首先最重要的一步是配置ActionServlet,这个用标签的servlet-name属性起一个名字叫action,然后用servlet-class属性指定ActionServlet的类.然后用标签的servlet-name属性指定action,在用url-pattern指定接收范围是*.do的请求.不管应用中包含了多少子应用,都只需要配置一个ActionServlet,类来出来应用中的不同的功能,其实者就是不必要的,因为Servlet本身就是多线程的,而且目前Struts只允许配置一个ActionServlet.声明ActionServlet的初始化参数:子元素用来配置Servlet的初始化参数.param-name设置config参数名.param-value设置struts-config.xml的路径参数值. 6'r%|hAh ?NJh<K" 配置欢迎使用清单:如果客户访问Web的时候值是访问了WEB应用的根目录URL.没有具体的指定文件,Web会自动调用Web的欢迎文件.元素来配置的.通过其中的欢迎页面来配置. g- i6FL gDx[RYf 配置错误处理:尽管Struts框架功能强大的错误处理机制,但是不能保证处理所有的错误或者异常.当错误发生时,如果框架不能处理这种错误,把错误抛弃给Web容器,在默认的情况下web容器会想客户端返回错误信息.如果想避免让客户看到原始的错误信息,可以在Web应用发布描述文件中配置元素.通过404来定义错误的类型.然后通过要处理错误的JSP页面来对错误进行处理.还可以用来设置异常,然后通过来处理异常的JSP页面来处理异常. &S/lOdp 2!XsRdn^p/ 配置Struts标签库:这个就和以前学到的JSP自定义标签类似,配置元素为来配置.这个指定标签库的uri,类似起一个名称.这个是标签库的位置也就是实际所在的路径.通过这样的方法引入一个标签库,然后在前台JSP页面就可以通过自己定义的URI来调用标签. X3AQVh3mD 3s+U]~& Struts配置文件:struts-config.xml文件.首先研讨一下org.apache.struts.config包,在struts应用启动的时候会把Struts配置文件信息读取到内存中,并把它们存放在config包中相关的JavaBean类的实例中.包中的每一个类都和struts配置文件中特定的配置元素对应,ModuleConfig在Struts框架中扮演了十分重要的角色,它是整个config包的核心,在Struts运行时来存放整个应用的配置信息.如果有多个子应用都会有一个ModuleConfig对象,它和Struts文件根元素的对应.根元素中包含等元素. M- %>ch+= /'GZ4E61 元素:时Struts配置文件的根元素,和它对应的配置类ModuleConfig类,元素有8个子元素.他们的DTD定义是data-sources?form-bean? global-exception?global-forwards?action-mapping?controller?message-resources?plug-in*在Struts配置文件中,必须按照DTD指定的先手顺序来配置元素的各个子元素,如果颠倒了这些子元素的顺序,会产生错误. cdRu< j IpS8VH 元素:用来配置应用所需要的数据源,数据源负责创建和特定的数据库的连接.许多数据源采用连接池的机制实现.以便提高数据库访问的性能.JAVA语言提供了javax.sql.DataSource接口,所有的数据源都必须实现这个接口.许多应用服务器和Web服务器都提供了数据源组件.很多数据库厂商也提供了数据源的实现.元素包含多个子元素永远配置特定的数据源.他们可以包含多个子元素用于设置数据源的各种属性.配置了数据源以后,就可以在Action类中访问数据源,在Action中定义了getDataSource(HttpRequest)方法,用于获取数据源对象的引用.然后可以利用DataSource对象调用getConnection获取一个连接对象对数据库进行操作.在配置文件中声明多个数据源的时候需要为每一个数据源分配唯一的Key值,通过这个来表示特定的数据源.获取特定的数据源的时候可以用dataSource = getDataSource(reqeust,”A”); @jOKb*N`{ I)@ )B / 元素:用来配置多个ActionForm,包含一个或者N个子元素.每个元素都包含多个属性.className指定和匹配的类.name指定该ActionForm的唯一标识符,这个属性是必须的以后作为引用使用.type指定ActionForm类的完整类名,这个属性也是必须的.注意包名也要加上.是指定动态的Form的元素,以后会深入了解. F/Styl/4B !~5ZdP~元素:用于配置异常处理,元素可以包含一个或者多个元素,用来设置JAVA异常和异常处理类ExceptionHandler之间的映射.className指定和元素对应的配置类,默认的不用动.handler指定异常处理类默认是ExceptionHandler.key指定在本地资源文件中异常的消息Key,path指定当前异常发生的时候转发的路径.scope指定ActionMessages实例存放的范围.type指定需要处理异常类的名字,必须的.bundle指定Resource Bundle. )%SW/;S )y%/;NGT 元素:用来声明全局转发,元素可以有一个或者N个元素组成,用于把一个逻辑名映射到特定的URL,通过这种方法Action类或者JSP页面无需指定URL,只要指定逻辑名称就可以实现请求转发或者重定向.这样可以减少控制组件和视图的聚合.易于维护.className对应的配置类.contextRelative如果为true表示当path属性以/开头的时候,给出的是对应的上下文URL默认是false.name转发路径的逻辑名,必须写.path转发或者重定向的URL,必须写必须是以/开头.redirect设置为true的时候表示执行重定向操作,此项为false的时候,表示执行请求转发操作.重定向与请求转发的区别以后就是重定向是把请求生成应答给客户端然后在重新发送给定向的URL,浏览器地址栏会有显示.而转发就是直接把请求转发给本应用的另一个文件,不生成应答所以客户端IE没显示. rf tG!: _.]}BA 元素:包含一个或者N个元素,描述了从特定的请求路径到响应的Action的映射.在元素中可以包含多个子元素,他们分别配置局部异常处理和局部转发.attribute设置Action关联的ActionForm在request或者session范围内的key.就是在request或者session共享内的名称.className对应配置元素的类.默认的是ActionMapping.forward指定转发URL路径include指定包含URL路径.input指定包含表单的URL,当表单验证失败的时候发送的URL.name,指定和该Action关联的Form名字.该名字必须是在form-bean中定义过的,可写可不写.path必须/开头的方位Action的路径.parameter指定Action配置参数.在Action的execute()方法中可以调用ActionMapping的getParameter()方法来读取匹配的参数.roles指定允许调用该Action的安全角色,多个角色之间逗号格开.scope指定Form的存在范围.默认是session.tyep指定Action的完整类名.unknown如果是true表示可以处理用户发出的所有的无效的ActionURL默认是false.validate指定是否调用ActionForm的validate方法. ( R1E69B C8?39A/J 元素:用于配置ActionServlet.buffreSize指定上载文件的输入缓冲大小.该属性为可选默认4096.className指定元素对应的配置类,ControllerConfig.然后是contentType指定响应结果内容类型和字符编码,该属性为可选,默认是text/html如果在Action或者JSP网页也设置了类型内容,会覆盖这个.locale指定是否把Locale对象保存到当前用户的session中默认false.tempDir指定处理文件上载的临时工作目录.nochache如果是true在响应结果中加入特定的头参数. FeTG-R'a w2hgKCaJj 元素:用来配置Resource Bundle.用于存放本地文本消息文件.className元素对应的配置类.MessageResourcesConfig.factory指定消息的工厂类.key指定文件存放的Servlet对象中采用的属性Key.null指定如何处理未知消息.parameter指定消息的文件名. gAB~X-@ R>f+1]3 元素:用于配置Struts插件. tA4vy?FjX ?C?9J;`X 配置多应用模块:所有的子应用都可以共享同一个ActionServlet实例,但是每个子应用都有单独的配置文件.把应用划分为多个子应用模块.首先为每个应用创建单独的Struts配置文件,在web.xml的ActionServlet配置代码中添加几个子应用信息.采用元素来实现应用之间的切换. `YbidD"'P _LF{xXd@\N Digester组件:是一个Apache的另一个开源代码项目.当Struts被初始化的时候,首先会读取并解析配置文件,框架采用Digester组件来且西配置文件.然后创建config包中的对象.者对象用于存放配置信息. X?*pK6Pe jdk8@xt" 其实配置文件不难,只要都理其中的原理就OK了.真正实际的项目开发中,采用的工具例如Eclipse系列,提供了相应的插件,在创建一个Struts工程的时候配置文件的标签都是自动生成的,而我们只需要往里面填写属性就OK了 %CCM27Bl

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享文档获得金币 ] 2 人已下载

下载文档