webwork 文件配置

来源:互联网 发布:自考网络助学加分 编辑:程序博客网 时间:2024/06/07 04:51
- webwork.properties 
    
      Webwork属性配置文件。Webwork有个缺省的属性配置文件default.properties,在webwork.jar文件中,你可以建立一个webwork.properties
      文件重新设置相关属性,相同属性的设置webwork.properties将覆盖default.properties的设置。下面是个default.properties内容,对其中
      属性作点说明:
      ### 国别区域设置 中国就设为 zh_CN
      webwork.locale=en_US
      ### 指定Webwork2采用哪个解析器解析以multipart/form-data 发送的Http请求
      #webwork.multipart.parser=cos
      webwork.multipart.parser=pell
      # 设置Servlet上下文临时文件目录位置及上传文件大小的最大值
      # 如果没有指定saveDir,将使用容器的临时目录
      webwork.multipart.saveDir=
      webwork.multipart.maxSize=2097152
      ### Load custom property files (does not override webwork.properties!)
      webwork.custom.properties=application,com/webwork/extension/custom
      # Action的后缀名称
      webwork.action.extension=action
      # 标准UI主题,用于定义缺省主题模板在哪个位置,相对于/
      webwork.ui.theme=xhtml
      webwork.ui.templateDir=template
      ### 设置当xwork.xml文件发生改变时是否重新载入
      webwork.configuration.xml.reload=false
      ### 指定velocity模板引擎的属性文件
      webwork.velocity.configfile = velocity.properties
      ### 链到WebWorkVelocityContext的VelocityContext类名列表,用逗号分割
      webwork.velocity.contexts =
 
  - webwork-default.xml 
 
    webwork-default.xml 包含在webwork.jar中,是一个基本配置文件,里面配置了标准的Result Type、Interceptors以及两个interceptors stacks 
    defaultStack和validationWorkflowStack,可以Include到xwork.xml文件直接使用而不必进行Copy。如:
    <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
    <xwork>
       <include file="webwork-default.xml"/>    
        
       <package name="default" extends="webwork-default">
        ...
        </package>
    </xwork>
 
    下面是Webwork2.1的webwork-default.xml文件内容:
    <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
    <xwork>
        <package name="webwork-default">
            <result-types>
                <result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>
                <result-type name="redirect" class="com.opensymphony.webwork.dispatcher.ServletRedirectResult"/>
                <result-type name="velocity" class="com.opensymphony.webwork.dispatcher.VelocityResult"/>
                <result-type name="chain" class="com.opensymphony.xwork.ActionChainResult"/>
                <result-type name="xslt" class="com.opensymphony.webwork.views.xslt.XSLTResult"/>
                <result-type name="jasper" class="com.opensymphony.webwork.views.jasperreports.JasperReportsResult"/>
          <result-type name="freemarker" class="com.opensymphony.webwork.views.freemarker.FreemarkerResult"/>
            </result-types>
            <interceptors>
                <interceptor name="timer" class="com.opensymphony.xwork.interceptor.TimerInterceptor"/>
                <interceptor name="logger" class="com.opensymphony.xwork.interceptor.LoggingInterceptor"/>
                <interceptor name="chain" class="com.opensymphony.xwork.interceptor.ChainingInterceptor"/>
                <interceptor name="static-params" class="com.opensymphony.xwork.interceptor.StaticParametersInterceptor"/>
                <interceptor name="params" class="com.opensymphony.xwork.interceptor.ParametersInterceptor"/>
                <interceptor name="model-driven" class="com.opensymphony.xwork.interceptor.ModelDrivenInterceptor"/>
                <interceptor name="component" class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>
                <interceptor name="token" class="com.opensymphony.webwork.interceptor.TokenInterceptor"/>
                <interceptor name="token-session" class="com.opensymphony.webwork.interceptor.TokenSessionStoreInterceptor"/>
                <interceptor name="validation" class="com.opensymphony.xwork.validator.ValidationInterceptor"/>
                <interceptor name="workflow" class="com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor"/>
                <interceptor name="servlet-config" class="com.opensymphony.webwork.interceptor.ServletConfigInterceptor"/>
                <interceptor name="prepare" class="com.opensymphony.xwork.interceptor.PrepareInterceptor"/>
                <interceptor name="conversionError" class="com.opensymphony.webwork.interceptor.WebWorkConversionErrorInterceptor"/>
                <interceptor-stack name="defaultStack">
                    <interceptor-ref name="static-params"/>
                    <interceptor-ref name="params"/>
                    <interceptor-ref name="conversionError"/>
                </interceptor-stack>
                <interceptor-stack name="validationWorkflowStack">
                    <interceptor-ref name="defaultStack"/>
                    <interceptor-ref name="validation"/>
                    <interceptor-ref name="workflow"/>
                </interceptor-stack>
            </interceptors>
        </package>
    </xwork>
 
  - validators.xml
    
    Webwork2的验证完全利用XWork的验证框架,用于Action执行前的输入数据验证。
    Validators应用前首先要进行注册,由于XWork的ValidatorFactory完成这项工作。在程序中可以用
      ValidatorFactory.registerValiator(String name,String className)
    静态方法进行Validator的注册;或者将Validator.xml文件放在/WEB-INF/classes下,其内容如下:
    <validators>
        <validator name="required" class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>
        <validator name="requiredstring" class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>
        <validator name="int" class="com.opensymphony.xwork.validator.validators.IntRangeFieldValidator"/>
        <validator name="date" class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/>
        <validator name="expression" class="com.opensymphony.xwork.validator.validators.ExpressionValidator"/>
        <validator name="fieldexpression" class="com.opensymphony.xwork.validator.validators.FieldExpressionValidator"/>
        <validator name="email" class="com.opensymphony.xwork.validator.validators.EmailValidator"/>
        <validator name="url" class="com.opensymphony.xwork.validator.validators.URLValidator"/>
        <validator name="visitor" class="com.opensymphony.xwork.validator.validators.VisitorFieldValidator"/>
        <validator name="conversion" class="com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator"/>
    </validators>
    
    第二步是将其与需要执行验证的Action关联起来,就是给相应Action指定ValidationInterceptor,这个过程在进行Action配置(xwork.xml)
    时完成,具体就是将ValidationInterceptor-refs加在Action配置中:
      <interceptor name="validator" class="com.opensymphony.xwork.validator.ValidationInterceptor"/>
      <action name="MyAction" class="com.opensymphony.webwork.example.MyAction">
          <result name="success" type="velocity">
              <param name="location">/success.vm</param>
          </result>
          <interceptor-ref name="validator"/>
      </action>
      缺省的validationWorkflowStack已包含validator。
      验证规则:
每个Action类可以指定一个ActionName-validation.xml 
每个Action别名可以指定一个ActionName-Alias-validation.xml 
扩展类和接口实现类Action,Webwork将向上搜索继承树,查找Action的父类和被实现接口的缺省Validator
      最后在相应的xxx-validation.xml中指定验证内容。下面是个示例: SimpleAction-validation.xml
       
        <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN"
                "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
        <validators>
            <field name="bar">
                <field-validator type="required">
                    <message>You must enter a value for bar.</message>
                </field-validator>
                <field-validator type="int">
                    <param name="min">6</param>
                    <param name="max">10</param>
                    <message>bar must be between ${min} and ${max}, current value is ${bar}.</message>
                </field-validator>
            </field>
            <field name="date">
                <field-validator type="date">
                    <param name="min">12/22/2002</param>
                    <param name="max">12/25/2002</param>
                    <message>The date must be between 12-22-2002 and 12-25-2002.</message>
                </field-validator>
            </field>
            <field name="foo">
                <field-validator type="int">
                    <param name="min">0</param>
                    <param name="max">100</param>
                    <message key="foo.range">Could not find foo.range!</message>
                </field-validator>
            </field>
            <validator type="expression">
                <param name="expression">foo > bar</param>
                <message>Foo must be greater than Bar. Foo = ${foo}, Bar = ${bar}.</message>
            </validator>
        </validators>
      
      解析 SimpleAction-validation.xml文件。
           我们看到,field-validator、validator元素都有一个 type 属性,它其实就是由ValidatorFactiory注册的Validator的名子。
      param参数是可选的,message元素是必须的。message元素可以有个key属性,通过key可以在Action验证失败时显示国际化信息。这里关于
      通过 key 获取国际化信息的说法在Webwork2的Reference中有点不准确,LocaleAware接口是Webwork2的迁移版本。在Webwork2.1正式
      版是通过action调用getText()方法来取得国际化文本,不过这个action必须扩展ActionSupport或实现LocaleProvider、TextProvider
      接口。${...}中的值可以来自validator或action,如
        bar must be between ${min} and ${max}, current value is ${bar}.
      其中${min} ${max}来自validator,而${bar}来自action。
 
    >  components.xml
        
        Ioc配置文件。在Webwork2中,Ioc用于实现Component管理。要利用IIoc功能必须进行下面三步设置。
    
       1. 配置 web.xml文件
          要允许该功能,必对 web.xml进行下列配置:
            <filter>
                <filter-name>container</filter-name>
                <filter-class>com.opensymphony.webwork.lifecycle.RequestLifecycleFilter</filter-class>
            </filter>
            <filter-mapping>
               <filter-name>container</filter-name>
               <url-pattern>*.action</url-pattern> <!-- modify appropriately -->
            </filter-mapping>
            <listener>
                <listener-class>com.opensymphony.webwork.lifecycle.SessionLifecycleListener</listener-class>
            </listener>
            <listener>
                <listener-class>com.opensymphony.webwork.lifecycle.ApplicationLifecycleListener</listener-class>
            </listener>
        关于web.xml文件的配置请查阅servlet规范或web.xml的DTD。
        上面设置允许Webwork2管理application , session, request作用域的,既是在你的应用中只用到一个作用域的对象,上面三个
        filter都必须正确设置。
      
      2.配置xwork.xml
        ComponentInterceptor 用来应用Ioc模式到XWork的Action,在xwork.xml的Interceptors元素中应包含下面内容:
            <interceptor name="component" class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>
        应当确保所有需要注入Componenet的Action都 有这个Interceptor的引用。关于如何进行配置Interceptor参见上面xwork.xml文件
        配置说明。
        
        想要在别的对象或Component上应用Ioc,需要直接使用ComponentManager对象。
        defaultStack 内含ComponentInterceptor,所以如果你的 action 应用了defaultStack,ComponentInterceptor也就包含到里面了。
      3.配置components.xml文件
        该文件用来指定哪个component将应用Ioc模式来注入给 action,该配置由XWork的ComponentManager对象来加载,然后应用给任何
        实现 enabler 接口的 action。该文件必须放在/WEB-INF/classes下,下面是个组件Counter的配置示例,Counter对象的生命与
        session的相同,该Component将传给任一实现CounterAware接口的action类。
        <components>
            <component>
                <scope>session</scope>
                <class>com.opensymphony.webwork.example.counter.Counter</class>
                <enabler>com.opensymphony.webwork.example.counter.CounterAware</enabler>
            </component>
        </components>
        每个 component 必须有下面三属性设置:
            scope: 有效值是 application,session,request,不同的值决定component的生存期。其含义与ASP、JSP中的相应对象相同。
            class: component类。在指定的scope期间,该类的一个实例将对象需要该组件的action 有效。该组件是lazy-loaded的,只有
        真正需时才被创建,组件的实现必须有一个不带参数的构造器。
            enabker: 任何实现该接口的action都将会被注入该组件对象的实例。
        需要说明的是,当components依赖另外的components时, 后者的scope不能比前者窄。比如上面的session component不能依赖于一个
        request scope的component。
原创粉丝点击