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

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

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

    tao的學習樂園
    隨筆 - 6  文章 - 4  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    基礎知識詳見:http://mercyblitz.javaeye.com/blog/70106  http://mercyblitz.javaeye.com/blog/70114
    這兩篇文章,寫的很詳細。

    但在實際項目中是SSH架構的,我們需要拿到spring bean(例如BO,DAO等)然后設計一些跟業務相關的自定義標簽,這時就得用到spring提供的WebApplicationContextUtils,通過這個類的實例對象去取bean。
    示例代碼如下:
    1WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(pageContext.getServletContext());
    2        IUserBO userBO = (IUserBO) wac.getBean("userBO");
    3//userBO已經在spring配置文件中進行配置
    4<bean id="userBO" class="com.ns.UserBO" parent="commonService">
    5</bean>
    然后我們就可以在標簽實現類夾雜一些業務邏輯判斷了。
    posted @ 2009-07-09 17:15 teok 閱讀(144) | 評論 (0)編輯 收藏
        hibernate中get方法和load方法的根本區別在于:如果你使用load方法,hibernate認為該id對應的對象(數據庫記錄)在數據庫中是一定存在的,所以它可以放心的使用,它可以放心的使用代理來延遲加載該對象。在用到對象中的其他屬性數據時才查詢數據庫,但是萬一數據庫中不存在該記錄,那沒辦法,只能拋異常,所說的load方法拋異常是指在使用該對象的數據時,數據庫中不存在該數據時拋異常,而不是在創建這個對象時。由于session中的緩存對于hibernate來說是個相當廉價的資源,所以在load時會先查一下session緩存看看該id對應的對象是否存在,不存在則創建代理。所以如果你知道該id在數據庫中一定有對應記錄存在就可以使用load方法來實現延遲加載。
        對于get方法,hibernate會確認一下該id對應的數據是否存在,首先在session緩存中查找,然后在二級緩存中查找,還沒有就查數據庫,數據庫中沒有就返回null。雖然好多書中都這么說:“get()永遠只返回實體類”,但實際上這是不正確的,get方法如果在session緩存中找到了該id對應的對象,如果剛好該對象前面是被代理過的,如被load方法使用過,或者被其他關聯對象延遲加載過,那么返回的還是原先的代理對象,而不是實體類對象,如果該代理對象還沒有加載實體數據(就是id以外的其他屬性數據),那么它會查詢二級緩存或者數據庫來加載數據,但是返回的還是代理對象,只不過已經加載了實體數據。 
        關于二者查詢數據的順序可以由前面內容總結如下:get方法首先查詢session緩存,沒有的話查詢二級緩存,最后查詢數據庫;反而load方法創建時首先查詢session緩存,沒有就創建代理,實際使用數據時才查詢二級緩存和數據庫

        總之對于get和load的根本區別,一句話,hibernate對于load方法認為該數據在數據庫中一定存在,可以放心的使用代理來延遲加載,如果在使用過程中發現了問題,只能拋異常;而對于get方法,hibernate一定要獲取到真實的數據,否則返回null。   
    posted @ 2009-07-07 13:46 teok 閱讀(303) | 評論 (1)編輯 收藏
         摘要: 提起Java內部類(Inner Class)可能很多人不太熟悉,實際上類似的概念在C++里也有,那就是嵌套類(Nested Class),關于這兩者的區別與聯系,在下文中會有對比。內部類從表面上看,就是在類中又定義了一個類(下文會看到,內部類可以在很多地方定義),而實際上并沒有那么簡單,乍看上去內部類似乎有些多余,它的用處對于初學者來說可能并不是那么顯著,但是隨著對它的深入了解,你會發現Java的...  閱讀全文
    posted @ 2009-07-01 08:12 teok 閱讀(279) | 評論 (0)編輯 收藏
    1.純form提交
       只要將form的enctype設置為multipart/form-data即可
    2.ajax form提交
       這個時候如果不上傳文件,然后再去提交表單,就會報argument mismatch,這是因為在struts用PropertyUtilsBean對頁面組件中的數據進行form封裝的時候出現了類型轉換問題,無法將<html:file/>中的空值轉換成FormFile類型。
      解決方法是提交表單的方法中將<html:file/>的name屬性換掉,以此避免strut form的轉換錯誤。
    示例:
     1     if($("#picFile").val()==""){
     2         $("#picFile").attr("name","nullFile");
     3     }


     4     var url = "<c:url value='/user/user/personal.ao?method=modifyBasic'/>";
     5     //$("#userForm").submit();
     6     //$.formSubmit("userForm",url);
     7     $.ajaxFormSubmit("userForm",url,{callback:function(data){
     8         //解析json對象
     9         var json = eval("("+data+")");
    10         if(json.status=="success"){
    11           detailShow();
    12           loadBasic();
    13           $("#divDialog").html("修改個人基本信息成功!<br><input type='button' value='確定' onclick=\"$('#divDialog').close()\">");
    14           $("#divDialog").dialog({title:"消息窗口"});
    15         }
    16     }});

    posted @ 2009-06-11 11:00 teok 閱讀(528) | 評論 (0)編輯 收藏
    打個比方.
    現在的j2ee開發,就好象對面來了一個人.
    最外面穿著一件風衣(HTML)
    風衣里面穿著西裝(Struts)
    西裝里面穿著馬甲(Spring)
    馬甲里面穿著襯衫(Hibernate)
    襯衫的里面才是真實的人(數據庫)
    全部衣服都是采用棉布做成的(Java)
    每件衣服上都可能有其他配件(第3方庫)
    各件衣服之間需要配套使用(版本兼容)

    如果你想看到這個人到底長啥樣,必須得:先脫一件,再脫一件,再脫一件.最后才能看到最終數據庫里面的數據是啥樣子.

    在很久很久以前,這個人是不穿衣服的.
    你直接可以看到他(SQL語句)
    現在不行了,你必須穿越層層衣服來看這個人.

    每件衣服都是不同的廠家做出來的.而且隨時在改變.
    你必須自己把這些衣服一件一件套上去,祈禱他們大概能夠合身.

    每件衣服都可能有漏洞(bug),你得自己想辦法打個補丁(patch)上去.
    posted @ 2009-06-04 08:14 teok 閱讀(207) | 評論 (0)編輯 收藏
    情境:需要將數據庫中倆個字段拼接起來然后用傳入的參數進行模糊查詢.

    用HQL解決如下:
    1 From ns.project.persistence.model.TZhidao as tz
    2        where status = '1'
    3        /~title:  and tz.title || ':' || tz.description like '%'||{title}||'%' ~/
    4        /~sortColumn:  ORDER BY tz.[sortColumn] [sortDirection] ~/



    posted @ 2009-06-03 17:22 teok 閱讀(1278) | 評論 (2)編輯 收藏
    后臺方法:
    1 JSONArray json = new JSONArray();
    2             String pareId = request.getParameter("dicId");
    3             List list = zhidaoBO.getQuestionTDicByParentId(pareId);//返回一個list
    4             json = JSONArray.fromObject(list);
    5             return super.ajaxReturnJSON(request, response, json.toString());
    頁面接收到的結果:
    [["402881c2219417340121945dd7d10008","瑜伽","zYoga"],
    ["402881c2219417340121945eeb730009","有氧健身操","zAerobicGym"]]
    然后在回調函數里用js去操作
     1 $.post("<c:url value='/user/zhidao/do.ao?method=getChildClass'/>",
     
    2         {"dicId":id},
     
    3         function(json){
     
    4           json=eval('('+json+')');
     
    5           var obj = $("#childSelect");
     
    6           obj.empty();
     
    7           for(var i=0;i<json.length;i++){
     
    8             //obj.append(<option value='" + json[i][0] + "'
                    onclick='optionSelect(""" + json[i][0] + """)'>" + json[i][1] + "</option>");

     9             obj.append("<option value='" + json[i][0+ "'>" + json[i][1+ "</option>");
    10           }
    11          });

    posted @ 2009-05-31 14:30 teok 閱讀(5732) | 評論 (1)編輯 收藏
    僅列出標題  
    trust what we trust...
    主站蜘蛛池模板: 一级特黄录像视频免费| 亚洲视频在线观看视频| 亚洲国产精品无码第一区二区三区| 美女在线视频观看影院免费天天看 | 亚洲伊人久久精品| 中文字幕在线免费| 久久精品亚洲中文字幕无码麻豆 | 67pao强力打造67194在线午夜亚洲| 免费视频成人片在线观看| 中文字幕亚洲精品资源网| 日本zzzzwww大片免费| 亚洲伊人久久大香线蕉在观| 97无码免费人妻超级碰碰夜夜| 亚洲精品人成网在线播放影院| 四虎成人免费网址在线| 香蕉视频在线观看免费| 亚洲国产精品综合久久一线 | 亚洲AV一二三区成人影片| 成人免费毛片观看| 国产亚洲女在线线精品| 亚洲人成网站观看在线播放| 爱情岛论坛免费视频| 亚洲色偷偷综合亚洲AVYP| 日韩免费的视频在线观看香蕉| 亚洲伊人久久大香线蕉| 日本免费人成黄页在线观看视频| 亚洲a∨国产av综合av下载| 91麻豆精品国产自产在线观看亚洲| 久久精品成人免费观看| 亚洲中文字幕久久无码| 亚洲性日韩精品国产一区二区| 一级毛片成人免费看免费不卡| 亚洲人成欧美中文字幕| 精品亚洲视频在线观看| 亚洲一级免费视频| 日韩精品亚洲专区在线影视| 亚洲AV美女一区二区三区| 女人被弄到高潮的免费视频| 日韩av无码免费播放| 亚洲熟女综合色一区二区三区| 亚洲熟妇丰满多毛XXXX|