<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 在线播放国产不卡免费视频| 中文字幕免费在线看电影大全 | 一个人免费观看视频在线中文| 亚洲午夜福利精品无码| 日本在线免费观看| 久久亚洲精品国产亚洲老地址| 亚洲精品国产自在久久 | 黄色一级毛片免费看| 亚洲国产另类久久久精品黑人| 亚洲免费一级视频| 羞羞视频免费网站入口| 亚洲综合精品一二三区在线| 拨牐拨牐x8免费| 好吊色永久免费视频大全| 亚洲区视频在线观看| 亚洲国产人成中文幕一级二级| 蜜桃视频在线观看免费视频网站WWW| 亚洲中文字幕无码av| 亚洲AV无码欧洲AV无码网站| 精品国产免费观看一区| 99在线热播精品免费99热| 亚洲精品永久在线观看| 亚洲五月激情综合图片区| 亚洲av无码成人精品区在线播放| 在线成人爽a毛片免费软件| 免费一级毛片在线播放放视频| 亚洲大尺码专区影院| 亚洲色偷拍另类无码专区| 永久黄网站色视频免费| 18女人毛片水真多免费| 中国国产高清免费av片| 337P日本欧洲亚洲大胆艺术图| 亚洲视频在线观看不卡| 国产精品亚洲成在人线| 免费看男女下面日出水视频| 日韩免费精品视频| 99re在线精品视频免费| 美女无遮挡拍拍拍免费视频| 老司机午夜精品视频在线观看免费| 亚洲欧洲综合在线| 亚洲大片在线观看|