论坛首页 入门讨论版 Java

《WebWork in action》第三章

浏览 671 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-09-26
第三章: 配置WebWork

一. 配置Action

    1. 基本配置

       . action名
       . action类
       . result类型

   

   
       
       
       

       
                       
                        name="helloWorld"
                       
                        class="ch2.example1.HelloWorld">
                   
            login.jsp
            /index.jsp
       

       

   
      

        以上例子中,如果helloWorld action返回的result code是SUCCESS,那么用户将会重定向到/index.jsp。如果返回的
        result code是INPUT,将会显示login.jsp页面。

    2.  配置别名重用action

        将多个名字映射到相同的action类;这个名字称为别名。这时多个请求访问相同的execute()方法;

        在别名基础上,可增加一个可选的method属性,指定webwork该调用哪个方法。所指定的方法格式与execute()方法一样。
        这时多个请求访问不同的方法;

       
            cal.jsp          
       

       
       
            cal.jsp          
       
        

        注:WebWork通过xwork.xml映射至方法有两种途径:
            . 通过查找与method属性的值一致的方法;
            . 通过查找doMethod()形式的方法;

            WebWork先找method属性一致方法,如找不到,再找doMethod()形式方法;

    3.  不配置别名重用action

        通过name!method.action形式请求访问action,其中name为action的映射名字。这时不需额外配置。

        注:优先推荐,但要预防不怀好意的用户通过该途径使用你不想让用户调用的方法;

    4.  通过参数自定义action

        可通过在配置文件中设置参数传递给action. 从而达到非常灵活设置的目的。

        a. 在xwork.xml文件的action配置位置处配置以下信息(配置参数名称为url):

          
              paramTest.jsp
              http://www.javaw.cn         
          
 

        b. action

           在action中定义与参数名同名的属性以及对应的setter/getter方法,webwork在action执行时会自动调用
           setter方法为属性赋在xwork.xml文件中所配置的参数值;

        c. jsp

           通过标记:   获取参数值;

二. 配置Result

    1.  基本配置:

        paramTest.jsp

        result由两个部分组成:
        . result映射: 通过name属性指定result的逻辑名,name的属性值与action中execute()方法中的返回值相同;
                       result标记本体内容指定跳转的路径,既可以为绝对路径(/代表包含namespace内容在内的web应用根路径),
                       也可以为相对路径;
        . result类型: 通过type属性指定,默认值为dispatcher,可以指定为redirect。如指定为redirect,则产生
                       一个新的请求跳转至目的地址;

    2.  使用全局result映射减少重复配置

        设定全局result,服务于多个action配置,减少重复配置;

       
            paramTest.jsp
   

       

三. 配置interceptor

    interceptor(拦截器)是一种很特殊的对象,它围绕着action及result的执行过程。它可以在action之前或之后及result
    之后工作,实现了某些逻辑的松耦合,譬如安全、日志和校验。

    1.  定义interceptor

        . 定义

         
              
                   
                   
              

         


          注:一般不需自行定义,在webwork-default.xml文件中已定义了很多interceptor。webwork-default.xml位于
              webwork-2.2.4.jar文件根目录中;

        . 使用

         
              
                   
                   
              

              
                   
                   
              
 
         

       
        这样设置后,当paramTest.action被调用的时侯,timer和logger两个interceptor也会相应地被调用。

    2.  将多个interceptor组合为栈

        将多个interceptor组合到一起,而不需要为每一个action声明数量众多的。一个interceptor栈包含
        一组interceptor,并且按照它们本身在栈中定义的顺序来执行。

        . 定义

         
              
                   
                   
              

           
              
                   
                   
              

         
         

        . 使用       

         
              
                   
                   
              

           
              
                   
                   
              


              
                   
              

         
         

    3.  使用默认interceptor-ref减少重复配置

        通过使用default-interceptor-ref元素,package中每一个action都不再需要定义任何interceptor。

          
              
                   
                   
              

           
              
                   
                   
              


              

              
         
      

        注:如为一个action定义了interceptor,那么这个action将不再使用默认的interceptor。

四. 高级配置

    1.  package

        WebWork中的package和Java中的package在很多方面非常相似,它将多个action组织成一个模块。简化维护工作,提高
        重用性。一个package中包含了所有将用到的action, result, interceptor的定义。

    2.  扩展package

        WebWork中的package可以扩展另外的package:为其extends属性指定一个用逗号分隔的package列表,从而扩展该列表的
        package。当一个WebWork package扩展另外一个package时,将会从被包含的package中复制所有的定义,并在自己本身
        已有的定义基础上增加这些配置。这让你可以将配置的公共部分集中起来,减少package中重复定义的内容。

       
        ...
       


    3.  映射namespace

        WebWork通过action名字和所属的namespace标识action。如果package没定义namespace属性,将使用默认的namespace: "/"。
        当WebWork接收到一个请求的时侯,WebWork会将请求的URL分为namespace和action名字两个部分,然后从xwork.xml中查找
        namespace/action内容,如果没有找到,则从默认的namespace中查找action。

       
           
                    http://www.javaw.cn
                paramTest.jsp
               

       


        以上访问paramTest,通过URL: http://localhost:8080/enterinfo/paramTest.action,其中:
        . /enterinfo为namespace的名字;
        . paramTest为action的名字;

        多个package可以使用相同的namespace。

    4.  使用include标签实现组件化

        为了支持将应用程序划分为更容易管理的模块,WebWork提供了一种包含机制,可以将xwork.xml划分为多个文件,而每一个
        子文件又是与一个模块相联系的。可以通过使用标签指定文件名的方法将子文件包含到xwork.xml中,而WebWork
        就会在应用程序的classpath中查找指定的子文件。

       
       
                         
            
             ...
            

       

 
五. 其它配置

    1. web.xml

   
   
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
       
            webwork
           
                com.opensymphony.webwork.dispatcher.ServletDispatcher
           

       

       
            webwork
            *.action
       

       
            index.jsp
       

       
           
                webwork
               
                    /WEB-INF/lib/webwork-2.2.4.jar
               

           

       

   
      

    2. webwork.properties

       xwork.xml定义了action映射,并且将interceptor和result应用到这些action上。而webwork.properties用来定义
       application范围的设置,以及能够改变框架功能的配置参数。

       WebWork首先会装载位于WebWork JAR文件中的default.properties,然后再装载webwork.properties,并且根据
       webwork.properties内容改写之前装载的配置设定。
   
论坛首页 入门讨论版 Java

跳转论坛:
JavaEye推荐