<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-4  評論-14  文章-0  trackbacks-0
    EasyJWeb中提供了一些注解,可以給開發帶來很多方便。這些注解包括有數據驗證用的@FormPO、@Validator等;IOC注入用的@Inject、@InjectDisable等;action配置用的@Action等。
    今天我們來說說action配置時要用的注解@Action,使用這些注解可以大量減少配置文件的編寫。
    首先,我們來看看不使用這些注解的時候是怎么做的,以一個hello world程序為例。
    首先是action:
    public class HelloAction extends AbstractCmdAction
    {
        
    private IHelloService servie;

        
    public IHelloService setService(IHelloService service){
            
    this.service = service;
        }


        
    public Page doHello(WebForm form, Module module){
            System.out.println(service.sayHello());
            
    return null;
        }

    }

    service:
    public interface IHelloService{
        String sayHello();
    }

    service實現:
    public class HelloServiceImpl implements IHelloService
    {
        
    public String sayHello(){
            
    return "hello";
        }

    }

    如果要使這個程序正常運行,我們還需要配置service和action,easyjweb中默認集成spring,service是在spring的配置文件中配置:
        <bean id="helloService"    class="com.hello.service.impl.HelloServiceImpl">
        
    </bean>

    現在來配置action,在easyjweb的配置文件中這樣配置:
            <module name="hello" path="/hello" form="" scope="request"
                action
    ="com.hello.mvc.HelloAction" defaultPage="list"
                inject
    ="byType">

            
    </module>
    這里說說這個inject="byType",這樣配置之后在HelloAction中的屬性會自動根據類型來注入。inject還有byName等屬性,意思就是根據名字來注入。如果這里不加這個inject,那么配置文件就應該是這樣寫:
            <module name="hello" path="/hello" form="" scope="request"
                action
    ="com.hello.mvc.HelloAction" defaultPage="list"
                inject
    ="byType">
         
    <property name="service" ref="helloService" />
            
    </module>
    property的name屬性對應HelloAction中的service,名字要保持一致。ref對應上面在spring中配置的helloService的id。
    到這里,這個程序就可以運行了。
    一個簡單的hello程序就用了這么多配置文件,這讓人難以忍受。現在我們就來說說怎么使用EasyJWeb的注解來簡化配置。
    我們修改一下HelloAction的代碼,給這個類加上一個@Action注解:
    @Action(path="hello")
    public class HelloAction extends AbstractCmdAction
    {
        
    private IHelloService servie;

        
    public IHelloService setService(IHelloService service){
            
    this.service = service;
        }


        
    public Page doHello(WebForm form, Module module){
            System.out.println(service.sayHello());
            
    return null;
        }

    }

    這樣一來,我們就不需要easyjweb中配置的module了,當使用hello.ejf訪問的時候框架會自動把請求交給HelloAction處理。
    現在來簡單介紹一下@Action這個注解。
    @Action的各個屬性說明如下:
    name用來指Action的名稱,也是在容器中的Bean名稱,我們一般不使用這個屬性。
    path用來指定模塊的path值,也即所映射的url,如果不設值該值將會按照缺省的方式處理。
    alias用來指定這個模塊的path別名,也就是可以使用其它的一個或多個名稱來訪問這個模塊。
    inject用來指定Action中所有業務組件注入方式,默認值為按類型注入。如果為byName則表示按名稱注入,auto表示自動按名稱或類別注入,none則表示不注入。
    disInject用來標識不自動注入的屬性。
    autoInject用來標識允許自動注入的屬性。
    autoToken表示該模塊是否需要開取自動防重復提交功能;
    validate表示該模塊是否開取自動驗證功能,默認情況不開啟自動驗證;
    view表示該模板的視圖存放子目錄。
    scope用來指定這個Action在容器中的創建方式及生命周期,默認值為request,表示每次請求創建一次該對象,若為session則表示個用戶會話創建一個對象,若為singleton表示整個容器中只創建一次該實例。
    messageResource表示多國語言屬性文件的存放子目錄。
    通常我們只用到path、view、inject這幾個屬性,由于inject的默認值為"AutoJnjectByType",是最常用的,因此通常也不需要顯式指定這個屬性值。而disInject是用來標識不允許注入的屬性的,當我們的action出現了一些不需要注入的屬性時,如logger,我們就需要使用這個屬性來指定哪些是不需要注入的。autoToken則是標識是否開啟防重復提交功能的。

    posted on 2007-12-28 13:36 天 一 閱讀(1202) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 成年女人18级毛片毛片免费观看| av永久免费网站在线观看| 91福利视频免费| 国产亚洲精久久久久久无码| 国产福利电影一区二区三区,免费久久久久久久精 | 久久av无码专区亚洲av桃花岛 | a级毛片黄免费a级毛片| 亚洲中文字幕第一页在线| 免费夜色污私人影院网站| 亚洲XX00视频| 一日本道a高清免费播放| 亚洲精品无码AV中文字幕电影网站 | 免费A级毛片在线播放不收费| 亚洲AV无码AV日韩AV网站| 日韩中文字幕免费| 特黄aa级毛片免费视频播放| 亚洲高清无码综合性爱视频| 成人A毛片免费观看网站| 亚洲国产精品人久久| 2021在线永久免费视频| 亚洲成人免费网址| 四虎成人免费网址在线| 日本视频免费观看| 在线观看亚洲av每日更新| 久久这里只精品热免费99| 亚洲综合激情五月丁香六月| 精品国产免费观看| 国产精品小视频免费无限app| 亚洲国产第一站精品蜜芽| 色影音免费色资源| 国产亚洲蜜芽精品久久| 亚洲精品国产精品乱码不99 | 国产成人精品无码免费看| 亚洲明星合成图综合区在线| 四虎成人免费大片在线| 免费观看又污又黄在线观看| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲精品尤物yw在线影院| 99热这里只有精品6免费| 日韩亚洲国产高清免费视频| 亚洲va中文字幕无码|