<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 天 一 閱讀(1208) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 一级做a爰片性色毛片免费网站| a一级毛片免费高清在线| 亚洲一区二区三区深夜天堂| 亚洲精品国产摄像头| 成人片黄网站色大片免费观看cn| 午夜影院免费观看| 全部免费毛片在线| 亚洲精品成人图区| 色屁屁www影院免费观看视频| 七色永久性tv网站免费看| 国产美女精品久久久久久久免费| 亚洲Av永久无码精品三区在线| 亚洲国产精品无码久久九九大片 | 久久精品乱子伦免费| 亚洲精品无码久久久久| 亚洲码和欧洲码一码二码三码| 最近免费mv在线观看动漫| 国产福利免费观看| 成人久久久观看免费毛片| 亚洲色自偷自拍另类小说 | 免费国产黄网站在线观看动图 | 欧美三级在线电影免费| 亚洲色大成网站www永久一区| a级毛片在线免费观看| 国产成人涩涩涩视频在线观看免费 | 亚洲毛片不卡av在线播放一区| 亚洲一区二区三区四区视频 | 亚洲综合精品网站| 国产AV无码专区亚洲AV麻豆丫| 97免费人妻在线视频| 亚洲Av永久无码精品三区在线| 最近免费中文在线视频| 亚洲Av无码精品色午夜| 99久久免费国产香蕉麻豆| 亚洲人成网址在线观看| 91福利免费网站在线观看| 亚洲精品在线播放| 五月婷婷亚洲综合| 一级人做人a爰免费视频| 久久久久亚洲av成人无码电影| 免费在线人人电影网|