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

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

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

    設(shè)計java

    j2ee輕量級框架,IMVC,IORM && web網(wǎng)絡(luò)游戲

    IMVC框架特性詳解--ajax支持

        IMVC對ajax有了很好的支持。主要體現(xiàn)在兩方面。

        一 ajax View類型支持。Imvc的視同是通過一個View類來返回的,在action中通過return new View("/xxx.html")返回一個視圖,然后IMVC會通過Value中的數(shù)據(jù)渲染這個視圖。這是一般的流程,有些特殊的流程可以返回其他類型的View,我們先來看看View類的代碼:
    public final class View implements Cloneable{
        
    /**
         * 屬性介紹:普通的view,通過模板轉(zhuǎn)換
         
    */
        
    public static final int TYPE_VIEW=1;
        
    /**
         * 屬性介紹:轉(zhuǎn)向,不改變url
         
    */
        
    public static final int TYPE_REDIRECT=2;
        
    /**
         * 屬性介紹:專心 ,改變url
         
    */
        
    public static final int TYPE_REDIRECT2=3;
        
    /**
         * 屬性介紹:直接返回string,path的值
         
    */
        
    public static final int TYPE_AJAX=4;
        
        
    public static final int TYPE_EXCEPTION=5;

        
    private String path;
        
    private int type=1;
        
    public View(String path){
            
    this.path=path;
        }
        
    public View(String path,int type){
            
    this.path=path;
            
    this.type=type;
        }
        
    public View(Map map){
            JSONObject jsono
    =JSONObject.fromObject(map);
            path
    =jsono.toString();
            type
    =TYPE_AJAX;
        }
        
    public View(List array){
            JSONArray jsona
    =JSONArray.fromObject(array);
            path
    =jsona.toString();
            type
    =TYPE_AJAX;
        }
        
    public View(Object bean){
            JSONObject jsono
    =JSONObject.fromObject(bean);
            path
    =jsono.toString();
            type
    =TYPE_AJAX;
        }
        
    public String getPath() {
            
    return path;
        }
        
    public void setPath(String path) {
            
    this.path = path;
        }
        
    public int getType() {
            
    return type;
        }
        
    public void setType(int type) {
            
    this.type = type;
        }

        
    public View clone(String path){
            View v
    =cloneBase();
            v.path
    =path;
            
    return v;
        }
        
    public View clone(String path,int type){
            View v
    =cloneBase();
            v.path
    =path;
            v.type
    =type;
            
    return v;
        }
        
    public View clone(Map map){
            View v
    =cloneBase();
            JSONObject jsono
    =JSONObject.fromObject(map);
            v.path
    =jsono.toString();
            v.type
    =TYPE_AJAX;
            
    return v;
        }
        
    public View clone(List array){
            View v
    =cloneBase();
            JSONArray jsona
    =JSONArray.fromObject(array);
            v.path
    =jsona.toString();
            v.type
    =TYPE_AJAX;
            
    return v;
        }
        
    public View clone(Object bean){
            View v
    =cloneBase();
            JSONObject jsono
    =JSONObject.fromObject(bean);
            v.path
    =jsono.toString();
            v.type
    =TYPE_AJAX;
            
    return v;
        }
        
    private View cloneBase(){
            View v
    =null;
            
    try {
                v 
    = (View) super.clone();
            } 
    catch (CloneNotSupportedException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
    return v;
        }
    }
    我們主要關(guān)注以下幾個變量:
     /**
         * 屬性介紹:普通的view,通過模板轉(zhuǎn)換
         
    */
        
    public static final int TYPE_VIEW=1;
        
    /**
         * 屬性介紹:轉(zhuǎn)向,不改變url
         
    */
        
    public static final int TYPE_REDIRECT=2;
        
    /**
         * 屬性介紹:專心 ,改變url
         
    */
        
    public static final int TYPE_REDIRECT2=3;
        
    /**
         * 屬性介紹:直接返回string,path的值
         
    */
        
    public static final int TYPE_AJAX=4;
        
    public static final int TYPE_EXCEPTION=5;
        第一個是普通的View,通過ViewFactory.getView("/tt.html")這個方法返回的是普通的view,也就是可以通過IMVC渲染的視圖,而
    TYPE_REDIRECT則是返回一個跳轉(zhuǎn)view,可以跳轉(zhuǎn)到下一個action,TYPE_REDIRECT2也是一個跳轉(zhuǎn)view,不過是改變URL地址的view。TYPE_AJAX就是ajax試圖了,也是今天要講的主角了,至于最后一個TYPE_EXCEPTION,是把異常返回到客戶端瀏覽器到view,這里暫時不考慮。我們可以通過這樣一個構(gòu)造函數(shù)創(chuàng)造出ajax試圖,比如new  View("這是ajax信息",View.TYPE_AJAX),或者通過ViewFactory.getView("這是ajax信息",View.TYPE_AJAX)也是一樣,不過用factory創(chuàng)建的對象是通過對象的clone創(chuàng)建的,能節(jié)省一定的性能開銷。當(dāng)返回的是一個ajax View的時候,信息就會直接返回,而不是通過渲染試圖,比如上面的就直接返回“這是ajax信息”給客戶端,如果這個action是由客戶端ajax請求的話,直接返回數(shù)據(jù),是不是很方便呢?

        接下來的ajx特性也許會讓你覺得更方便,比如以下代碼:

    ....action前面的內(nèi)如.....
        User u
    =new User();
        u.setAge(
    1);
        u.setName(
    "汪汪汪");
        return ViewFactory.getView(u);
        這樣的返回會直接在客戶端打印出 {"age":1,"name":"汪汪汪"};也就是IMVC把對象映射成立JSON(一種js對象的String形式),這個返回數(shù)據(jù)在客戶端直接可以調(diào)用,比如data.name就直接調(diào)用出“汪汪汪”,是不是很方便?而且IMVC還支持把List,數(shù)組,Map,還有對象相互無限級嵌套返回成JSON數(shù)據(jù),這將大大增加AJAX開發(fā)的敏捷性和清晰性。

        二 ajax Chain支持。我們假設(shè)有一個全部ajax的網(wǎng)頁,里面有幾個div中的數(shù)據(jù)都是通過ajax的方式向服務(wù)器請求的,那么每個div都會請求一次ajax action,這樣就導(dǎo)致了請求次數(shù)頻繁,資源的浪費,IMVC提供了一種ajaxChain的概念,可以通過一個url請求多個action,然后把數(shù)據(jù)自動合并,比如下面的url
    http://xxx.com/ajaxChain.x?id=|one,two?id=1|
    這個url請請求了兩個action,然后把action數(shù)據(jù)合并,比如本來one.x返回的數(shù)據(jù)是{"name":"111"},而two返回的數(shù)據(jù)是 {"name":"2222"};則現(xiàn)在應(yīng)該返回的是{"one":{"name":"111"},"two?id=1",{"name":"2222"}},這樣,ajaxChain支持無數(shù)個action的連接。這樣以后可以將多個ajax合并為一個ajax,節(jié)省服務(wù)器資源。

        好了,IMVC的ajax支持就講到這里。


    --InstantMVC:j2ee輕量級mvc框架

    posted on 2008-06-11 19:14 剎那 閱讀(732) 評論(0)  編輯  收藏 所屬分類: 我的j2ee輕量級框架

    主站蜘蛛池模板: 免费毛片在线播放| 日韩电影免费在线观看网站| 亚洲美女一区二区三区| 亚洲一区二区三区四区视频| 麻豆91免费视频| 污污网站免费观看| 国产区卡一卡二卡三乱码免费| 久久精品国产亚洲av成人| 亚洲AV成人噜噜无码网站| 免费A级毛片无码A∨免费| 亚洲国产精品一区二区九九| 亚洲视频免费观看| 最近高清中文字幕无吗免费看| 亚洲一区二区精品视频| 亚洲精品无码专区在线播放| 777爽死你无码免费看一二区| 亚洲精品视频在线看| 亚洲色偷偷综合亚洲AV伊人蜜桃| a成人毛片免费观看| 女人18毛片免费观看| 中文字幕亚洲综合精品一区| 2021在线观看视频精品免费| 2020国产精品亚洲综合网| 蜜臀98精品国产免费观看| 亚洲综合丁香婷婷六月香| 国产自产拍精品视频免费看| 亚洲无mate20pro麻豆| 日本高清免费aaaaa大片视频| 亚洲一级大黄大色毛片| 在线观看永久免费视频网站| 人妻仑乱A级毛片免费看| 在线免费观看韩国a视频| 成人一级免费视频| 久久久亚洲精品视频| 国产精品免费看久久久 | 亚洲AV成人精品网站在线播放| 猫咪免费人成网站在线观看| 亚洲AV成人无码网站| 国产高清在线免费| 免费日本一区二区| 亚洲国产精久久久久久久|