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

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

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

    每日一得

    不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
    最近關心的內容:SSH,seam,flex,敏捷,TDD
    本站的官方站點是:顛覆軟件

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks

    #

    key words: REST webservice

    轉自廖宇雷的Weblog

    REST 是由 Roy Fielding 在他的論文《Architectural Styles and the Design of Network-based Software Architectures》中提出的一個術語。

    REST 是英文 Representational State Transfer 的縮寫,有中文翻譯為“具象狀態傳輸”(參考:《SIP/IMS網絡中的Representational State Transfer (REST)和數據分布》)。

    —————————————

    前面的內容比較枯燥,我說說我自己的理解。

    但是 REST 到底是什么呢?論文我看不懂,不過找到一篇更簡單易懂的東西:《Building Web Services the REST Way》

    根據這篇文章,我整理了一下我自己對 REST 的理解:

    REST 首先只是一種架構樣式,不是一種標準。這點和 Ajax 類似,兩者都是利用現有的成熟技術。

    在 REST 的定義中,一個 Web 應用總是使用固定的 URI 向外部世界呈現(或者說暴露)一個資源

    URI 是英文 Uniform Resource Identifier 的縮寫,中文翻譯“通用資源標志符”。

    “通用資源標志符”是指唯一標識一個資源(xhtml 文件、圖片、css 樣式表)的字符串。當然了,RFC 中定義的 URI 復雜得多,不過我們此處將 URI 想象成一個人的身份證號碼就行了(你不能有兩個同時有效的身份證號碼,一個號碼也不可能同時對應兩個人)。而我們天天掛在嘴邊的 URL 地址就是 URI 的一種表現形式(個人理解,有錯請糾正)。

    知道什么是 URI 后,我們來看一個實際例子:

    http://www.example.com/photo/logo 指向 example.com 網站(可以視為一個 Web 應用)中類型為 photo,名字為 logo 的資源。我們用瀏覽器訪問這個 URI,看到的將可能是一個 xhtml 文檔,其中用 <img src=”……” /> 來顯示實際的照片。

    http://www.example.com/photo/logo 很容易讓你想到 URL 重寫。事實上,這個地址很可能會在服務器內部處理為 http://www.example.com/photo.php?name=logo 這樣的地址。photo.php 是服務器端的一個動態腳本文件,根據 name 參數生成 xhtml 文檔返回給瀏覽器。

    現在假設我們要獲取這張照片的 XML 文檔。XML 文檔中包含照片的文件名、文件大小、拍攝日期等等信息。也就是說我們要獲取“同一個資源的不同表現形式的數據”。對于這個要求,我們可以很容易的用另一個 URL 地址達到:http://www.example.com/xml/logo。

    但是,這就違背了“URI 唯一標識一個資源”的定義。如果我們要獲取同一個資源的多種表現形式,那么就要使用更多的 URL,從而給一個資源指定了多個不同的 URI。

    而在 REST 中,不管是獲取照片的 xhtml 文檔還是 XML 文檔,或者照片文件本身,都是用同一個 URI,就是 http://www.example.com/photo/logo。

    那這是怎么辦到的呢?Ruby On Rails 中是通過分辨 HTTP Request Header 信息來分辨客戶端是想要取得資源的哪一種表現形式的數據。

    當我們用瀏覽器訪問一個網址時,瀏覽器會構造一個 HTTP 請求。這個請求有一個頭信息,其中包括了本次請求接受何種類型的數據。通常瀏覽器發送的 HTTP 請求頭中,Accept 的值都是 */*,也就說接受服務器返回的任何類型的數據。

    看到這里,聰明的家伙應該知道了。只要我們指定一個特定的 Accept 參數,那么服務器就可以通過判斷該參數來決定返回什么類型的數據。所以在一個采用 REST 架構的應用中,要獲取同一個資源的不同表現形式的數據,只需要使用不同的 HTTP 請求頭信息就行了。

    如果考慮為 Web 應用增加 Web Services,這種技術的價值就體現出來了。比如我寫了一個 Delphi 程序,現在只需要構造一個包含 Accept: text/xml 的 HTTP 請求頭,然后將請求發送到 http://www.example.com/photo/logo 就可以了。返回的結果就是一個 XML 文檔,而不是 xhtml 文檔。

    因為我們的 HTTP 請求頭信息有不同的狀態,從而可以獲得不同的數據,所以叫做“具象狀態傳輸” :)

    —————————————

    除了上面的用法,REST 還有進一步的擴展。

    我們在 Web 應用中處理來自客戶端的請求時,通常只考慮 GET 和 POST 這兩種 HTTP 請求方法。實際上,HTTP 還有 HEAD、PUT、DELETE 等請求方法。而在 REST 架構中,用不同的 HTTP 請求方法來處理對資源的 CRUD(創建、讀取、更新和刪除)操作:

    • POST: 創建
    • GET: 讀取
    • PUT: 更新
    • DELETE: 刪除

    經過這樣的一番擴展,我們對一個資源的 CRUD 操作就可以通過同一個 URI 完成了:

    http://www.example.com/photo/logo(讀取)
    仍然保持為 [GET] http://www.example.com/photo/logo

    http://www.example.com/photo/logo/create(創建)
    改為 [POST] http://www.example.com/photo/logo

    http://www.example.com/photo/logo/update(更新)
    改為 [PUT] http://www.example.com/photo/logo

    http://www.example.com/photo/logo/delete(刪除)
    改為 [DELETE] http://www.example.com/photo/logo

    從而進一步規范了資源標識的使用。

    通過 REST 架構,Web 應用程序可以用一致的接口(URI)暴露資源給外部世界,并提供對資源的操作服務。這對于以資源為中心的 Web 應用來說非常重要。例如照片共享網站、用戶社區等。

    —————————————

    Ruby On Rails 1.2 版對 REST 有很好的支持,但要在 PHP 中應用 REST 還需要解決不少問題:

    • 如何在服務端判斷 PUT、DELETE 請求方法;
    • 如何獲取用 PUT、DELETE 請求方法中傳遞的數據;
    • 如何獲取 HTTP 請求頭信息中的 Accept 參數值;
    • 如何在瀏覽器端發起 PUT 和 DELETE 請求。

    不過我仔細看了 PHP 文檔,我覺得上面幾個問題都是可以解決的。

    服務端綜合使用 $_SERVER[’HTTP_ACCEPT’]、$_SERVER[’REQUEST_URI’]、$_SERVER[’REQUEST_METHOD’]、$_SERVER[’QUERY_STRING’] 這些變量應該可以搞定前面三個問題。而第四個問題則可以用 JavaScript 的 XMLHttpRequest 對象來實現。

    不過我想 REST 的真正價值在于 Web Services,而不是通過瀏覽器操作的應用程序。

    —————————————

    參考:

    posted @ 2007-01-23 08:30 Alex 閱讀(448) | 評論 (0)編輯 收藏

    key words : web快速開發

    web快速開發是一個值得期待的東西,最早我接觸過codecharge,是一個商業軟件,功能據說很強大,我試用過,支持php,asp,jsp等多語言,但是感覺對java的支持不是很順手,接著就是asp,這個好也不好,原因就不說了,因為我對java關注。

    2. 接著就是dorado ,剛看到的,感覺也不錯,有asp的風格,不過更適合j2ee的環境 ,這里是他們的在線演示demo,有興趣的可以看一下

    3. 最后,剛google了一下,Oracle也有一個基于Oracle數據庫的快速開發產品? : APEX,基于瀏覽器做DB 開發,原來的名字叫做HTML DB,名字很直觀,據說Oracle的metalink就是用這個實現的,應該功能不賴。

    4.對了,再補充一個現在很熱的,Ror,聽說javaeye的網站要重新用ruby1.2開發,試用過一點,感覺確實令人震驚,值得關注。

    java的技術其實是看著很熱鬧,比較大的東西也不少,但是真正關注web這一塊的其實不多,無論是struts還是webwork,離我們所說的真正的“快速開發”的距離很遠,而以上一些工具的出現也許會逐步改善j2ee在這一領域的現狀。

    我之所以對這個目前有點興趣,確實有一種強烈的反差在折磨著我,因為我相信在j2ee的web開發里確實存在本來要開發1周多的工作量很可能用一個好的工具幾個小時就搞定了,這是一件多么荒唐搞笑的事情?如果dorado在它的產品中真的能做到這樣那我們的java開發那么坑吃坑吃的折騰個什么勁啊? 也許真的有奇跡,我寧愿相信有這樣的奇跡。

    大家有什么好的想法可以討論一下。
    posted @ 2007-01-20 22:56 Alex 閱讀(3784) | 評論 (7)編輯 收藏

    key words: powerdesign,power , design

    引言:
    發現powerdesign的文檔真的是不多,不過powerdesign還是很有用的,見到此類文檔就收藏下吧.

    轉自edeed

    ?附上一些使用pd11的心得:

    1、安裝PD v11.0版

    2、由pdm生成建表腳本時,字段超過15字符就發生錯誤(oracle)
    原因未知,解決辦法是打開PDM后,會出現Database的菜單欄,進入Database - Edit Current DBMS -script-objects-column-maxlen,把value值調大(原為30),比如改成60。出現表或者其它對象的長度也有這種錯誤的話都可以選擇對應的objects照此種方法更改!
    或者使用下面的這種方法:
    生成建表腳本時會彈出Database generation提示框:把options - check model的小勾給去掉,就是不進行檢查(不推薦)!
    或者可以修改C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\DBMS\oracl9i2.xdb文件
    修改好后,再cdm轉為pdm時,選擇“Copy the DBMS definition in model”把把這個資源文件拷貝到模型中。

    3、生成的建表腳本中如何把對象的雙引號去掉?
    打開cdm的情況下,進入Tools-Model Options-Naming Convention,把Name和Code的標簽的Charcter case選項設置成Uppercase或者Lowercase,只要不是Mixed Case就行!
    或者選擇Database->Edit current database->Script->Sql->Format,有一項CaseSensitivityUsingQuote,它的 comment為“Determines if the case sensitivity for identifiers is managed using double quotes”,表示是否適用雙引號來規定標識符的大小寫,可以看到右邊的values默認值為“YES”,改為“No”即可!
    或者在打開pdm的情況下,進入Tools-Model Options-Naming Convention,把Name和Code的標簽的Charcter case選項設置成Uppercase就可以!

    4、建立一個表后,為何檢測出現Existence of index的警告
    A table should contain at least one column, one index, one key, and one reference.
    可以不檢查 Existence of index 這項,也就沒有這個警告錯誤了!
    意思是說沒有給表建立索引,而一個表一般至少要有一個索引,這是一個警告,不用管也沒有關系!

    5、創建一個表在修改字段的時候,一修改name的內容,code也跟著變化,如何讓code不隨著name變化
    Name和Code 的右側都有一個按鈕“=”,如果需要不同步的話,把這個按鈕彈起來就可以了。
    Tools->General Options->Dialog->Name to Code Mirroring (去掉)

    6、由CDM生成PDM時,自動生成的外鍵的重命名
    PDM Generation Options->Detail->FK index names默認是%REFR%_FK,改為FK_%REFRCODE%,其中%REFRCODE%指的就是CDM中Relationship的code!另外自動生成的父字段的規則是PDM Generation Options->Detail->FK column name template中設置的,默認是%.3:PARENT%_%COLUMN%,可以改為Par%COLUMN%表示是父字段!

    7、如何防止一對一的關系生成兩個引用(外鍵)
    要定義關系的支配方向,占支配地位的實體(有D標志)變為父表。
    在cdm中雙擊一對一關系->Detail->Dominant role選擇支配關系

    8、修改報表模板中一些術語的定義
    即文件:C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\Report Languages\Chinese.xrl
    Tools-Resources-Report Languages-選擇Chinese-單擊Properties或雙擊目標
    修改某些對象的名稱:Object Attributes\Physical Data Model\Column\
    ??????? ForeignKey:外鍵
    ??????? Mandatory:為空
    ??????? Primary:主鍵
    ??????? Table:表
    用查找替換,把“表格”替換成“表”
    修改顯示的內容為別的:Values Mapping\Lists\Standard,添加TRUE的轉化列為是,FALSE的轉化列為空
    另外Report-Title Page里可以設置標題信息
    posted @ 2007-01-17 09:55 Alex 閱讀(3165) | 評論 (3)編輯 收藏

    key words : beanShell ,動態腳本

    原來第一次是在osworkflow中聽說過beanShell,最近又碰到,感覺還是挺有用的,比如對于我來說我就想有一些class文件拿過來直接調用看看,但有不想搭建一個麻煩的環境,而beanshell就可以滿足我這個需求。

    假設我欲調用的java為MyShit
    package?com.app;

    public?class?MyShit
    {
    ????
    static{
    ????????System.out.println(
    "this?is?in?static?blog");
    ????}

    ????
    public?static?void?main(String[]?args){
    ????????System.out.println(
    "this?is?in?main?method?:?hello?shit");
    ????}

    ????
    public?void?shit(){
    ????????System.out.println(
    "hello?shit!!!");
    ????}


    ????
    public?static?void?haha(){
    ????????System.out.println(
    "this?is?static?method?haha");
    ????}

    }


    javac ...
    java ..

    在dos中設置classpath,指向該class文件

    set classpath=%classpath%;c:\beanshell

    編寫一個 bsh的bat文件,便于dos直接調用beanshell腳本
    ?
    java?bsh.Interpreter?%1


    編寫一個test.bsh腳本
    //mytest
    import?com.app.*;

    print(
    "hello,it's?a?beanShell?test");

    List?list??
    =?new?ArrayList();
    list.add(
    "111");
    list.add(
    "222");
    list.add(
    "333");

    print(
    "the?list?=?"?+?list);

    Date?date?
    =?new?Date();
    print(
    "the?date?=?"?+?date);

    //method?test

    add(?a,?b?)?
    {
    ????
    return?a?+?b;
    }


    foo?
    =?add(1,?2);????????????//?3
    print("foo?=?"?+?foo);
    foo?
    =?add("Oh",?"?baby");???//?"Oh?baby"
    print("foo?=?"?+?foo);

    //about?object
    foo()?{
    ????print(
    "foo");
    ????x
    =5;

    ????bar()?
    {
    ????????print(
    "foo's?method?bar()");
    ????}


    ????
    return?this;
    }


    myfoo?
    =?foo();????//?prints?"foo"
    print(?myfoo.x?);?//?prints?"5"
    myfoo.bar();??????//?prints?"bar"

    MyShit?shit?
    =?new?MyShit();
    shit.shit();
    shit.main(
    null);
    print(
    "do?you?shit");

    //MyShit.haha();


    在dos下運行 bsh test.bsh就OK了

    另外,beanshell作為動態腳本語言可以結合 spring2.0的新特性,你新寫的業務類可以直接修改而不用重新發布,怎么樣,是不是比較方便,詳細操作請參考Springframework 2.0 與 ZK 混合開發實例

    試一試!

    詳細使用請參考官方文檔
    posted @ 2007-01-09 20:01 Alex 閱讀(6517) | 評論 (7)編輯 收藏

    key words: 連接池 數據庫

    發現一個有意思的現象,好多人在開發過程中不知道是出于訓練自己編碼還是為了重新發明輪子,總之明明已經存在的功能他非要自己實現一遍。

    今天又碰到一個。

    jdbc的連接,好多人也喜歡自己實現一個連接池,但是對于app server來說本身一般都有支持連接池的,為什么不用呢?
    寫了一通又長又臭的代碼,自己以為牛B的很,其實算個球啊。

    不要浪費,不要自己發明輪子,你不是最牛的,一定還有比你更牛的!

    對于weblogic或者oracle以及ibm的產品來說,大家還是比較習慣于用容器的jndi,但是即使對于tomcat,我個人也建議用tomcat自帶的。

    附: jndi連接數據庫

    public?final?static?synchronized?Connection?getConnection(String?inputJNDI)?throws
    ??????DBMException?
    {
    ????Connection?conn?
    =?null;
    ????String?strConnJNDI?
    =?null;
    ????
    try?{
    ??????Context?ctx?
    =?new?InitialContext();
    ??????_log.debug(ctx);

    ??????
    if?(null?!=?inputJNDI)?{
    ????????
    if(inputJNDI.length()?>?0)
    ??????????strConnJNDI?
    =?inputJNDI;
    ????????
    else
    ??????????strConnJNDI?
    =?dbJndiName;
    ??????}

    ??????
    else?{
    ????????strConnJNDI?
    =?dbJndiName;
    ??????}

    ??????DataSource?ds?
    =?(DataSource)?ctx.lookup(strConnJNDI);
    ??????_log.debug(ds);
    ??????conn?
    =?ds.getConnection();
    ????}

    ????
    catch?(Exception?ex)?{
    ??????_log.error(
    "It's?error?to?get?connection",?ex);
    ??????
    throw?new?DBMException("Error?to?get?connection");
    ????}

    ????_log.debug(conn);
    ????
    return?conn;
    ??}


    以此類推,類似于xml解析等的工作也沒有必要自己一步一步地用dom或者什么亂七八糟的sax自己去搞一遍,搞了半天就使為了得到其中的一個value,何苦來著???? 如果你不是為了做研究,那么,效率第一,安全第一.

    隨便說說,也許有人不同意我的觀點,沒關系,盡管談談,哈哈? :)
    posted @ 2007-01-04 20:58 Alex 閱讀(1949) | 評論 (8)編輯 收藏

    key words: 2007 plans

    新的一年開始了,制定一個計劃吧

    說說你有什么計劃

    如圖:

    2007-plans.png
    posted @ 2007-01-03 23:31 Alex 閱讀(1505) | 評論 (12)編輯 收藏

    key words: tomcat,數據源配置,datasource

    把一個應用從4.1移到5.5數據源死活不出來,用probe察看了一下居然datasource配置錯誤.

    4.x的配置如下:

    <Context?path="/cpms"?docBase="cpms"???debug="99"?privileged="true">
    ????????????
    <Resource?name="jdbc/report"?auth="Container"?type="javax.sql.DataSource"/>
    ????????????
    <ResourceParams?name="jdbc/report">?
    ????????????????
    <parameter>
    ????????????????????
    <name>username</name>
    ????????????????????
    <value>root</value>
    ????????????????
    </parameter>
    ????????????????
    <parameter>
    ????????????????????
    <name>password</name>
    ????????????????????
    <value>XXX</value>
    ????????????????
    </parameter>
    ????????????????
    <parameter>
    ????????????????????
    <name>driverClassName</name>?
    ????????????????????
    <value>org.gjt.mm.mysql.Driver</value>
    ????????????????
    </parameter>
    ????????????????
    <parameter>
    ????????????????????
    <name>url</name>?
    ????????????????????
    <value>jdbc:mysql://localhost/app</value>
    ????????????????
    </parameter>?
    ????????????????
    <parameter>
    ??????????
    <name>RemoveAbandoned</name>
    ??????????
    <value>true</value>
    ????????
    </parameter>
    ????????
    <parameter>
    ??????????
    <name>LogAbandoned</name>
    ??????????
    <value>true</value>
    ????????
    </parameter>
    ????????
    <parameter>
    ??????????
    <name>RemoveAbandonedTimeout</name>
    ??????????
    <value>60</value>
    ????????
    </parameter>
    ??????????????
    </ResourceParams>?
    ????
    </Context>??


    5.x的配置如下:

    <Context?path="/app"?docBase="cpms"
    ????????debug
    ="5"?reloadable="true"?crossContext="true">



    ??
    <Resource?name="jdbc/report"?auth="Container"?type="javax.sql.DataSource"
    ???????????????maxActive
    ="100"?maxIdle="30"?maxWait="10000"
    ???????????????username
    ="develop"?password="XX"?driverClassName="com.mysql.jdbc.Driver"
    ???????????????url
    ="jdbc:mysql://localhost:3306/app?autoReconnect=true"/>
    </Context>


    沒有具體看原因.知道的兄弟可以發表高見

    tomcat的管理和監控推薦用probe,自帶的那個admin管理太濫了。

    posted @ 2006-12-22 12:04 Alex 閱讀(1720) | 評論 (1)編輯 收藏

    key words: sql server,單用戶,master恢復

    ?作者:jankie
    日期:2006-12-1

    一、MASTER數據庫備份與恢復
    ? ?1、數據庫master正常情況下對master進行(完全)備份;
    若要恢復:
    ? ?2、停止SQL Server服務;
    ? ?3、以單用戶實例的方式啟動SQL Server,啟動時不要把窗口關閉;(具體看二)
    ? ?4、然后再對MASTE數據庫進行恢復即可;

    二、MSSQL單用戶實例的啟動方法:
    ??如何在單用戶模式下啟動SQL Server的命名實例(命令提示符)? ?
    ??在單用戶模式下從命令提示符啟動SQL Server 的命名實例? ???
    ??從命令提示符輸入:? ???
    ??sqlservr.exe -c??-m? ?-s? ?{instancename}? ?

    例1:
    ??1、sqlserver.exe -c -m 回車(默認實例)
    ??2、sqlserver.exe -c -m -s benet (實例名為benet)
    ? ?
    ??說明在啟動 sqlservr.exe之前,必須在命令窗口中切換到適當的目錄
    如:c:\program files\microsoft sql server\mssql\bin目錄下
    posted @ 2006-12-21 15:08 Alex 閱讀(506) | 評論 (0)編輯 收藏

    key words: dll,ocx,注冊控件

    最近項目中用到了收銀,需要在顧顯上顯示金額.


    1.將.dll、.ocx等考到system32下。
    2.用命令注冊regsvr32.exe? .dll。(eg:regsvr32.exe? OWC11.dll)
    3.在注冊表中查看:利用名稱或與其唯一對應的clsid("clsid:0002E55D-0000-0000-C000-???000000000046")可查找到相關信息
    posted @ 2006-12-20 15:13 Alex 閱讀(697) | 評論 (0)編輯 收藏

         摘要: key words: bea world2006 ,workshop studio, 快速開發

    bea world 2006 北京已經過去好幾天了,早就想記錄一下一直忙 :)
      閱讀全文
    posted @ 2006-12-20 11:39 Alex 閱讀(2666) | 評論 (10)編輯 收藏

    key words: commons log,log4j,apache log

    前言: 對于log4j雖然在用,但是也存在一個疑問,怎么有的用apache的commons logging有的直接用log4j,下面的這篇文章解釋了我的疑問.

    轉自 here

    Apache組織開發了一套用于支持Logging的Log4J,Java?1.4版本也引入了一套內置的 Logging框架,如果開發者想在這兩套Logging系統之間自由的切換,該怎么辦呢?答案就是,使用Commons?Logging。 Commons?Logging定義了一套抽象的Logging接口,用戶可以通過配置,使這些接口指向任何一個已存在的Logging系統。

    ?使用抽象Logging接口
    問題:
    你在編寫一個可以重復使用的庫,需要寫入Log信息,但你不想使你的Logging功能綁定在Apache?Log4J或者JDK?1.4?Logging框架上。
    解決方案:

    public?static?void?main(String[]?args)?{//自己替換[]

    ??System.setProperty("org.apache.commons.logging.Log",
    ??????"org.apache.commons.logging.impl.Jdk14Logger");
    ??Log?log?=?LogFactory.getLog("com.discursive.jccook.SomeApp");

    ??if?(log.isTraceEnabled())?{
    ????log.trace("This?is?a?trace?message");
    ??}

    ??if?(log.isDebugEnabled())?{
    ????log.debug("This?is?a?debug?message");
    ??}

    ??log.info("This?is?an?informational?message");
    ??log.warn("This?is?a?warning");
    ??log.error("This?is?an?error");
    ??log.fatal("This?is?fatal");

    }


    LogFactory.getLog方法會根據底層環境返回一個適當的Log實現。如果用戶想指定一個具體的Logging系統實現,可以設置org.apache.commons.logging.Log系統屬性。例如:
    System.setProperty("org.apache.commons.logging.Log",
    "org.apache.commons.logging.impl.Log4JLogger");
    這樣就會使用Log4J作為Logging系統。
    org.apache.commons.logging.Log可以設定為:
    ?org.apache.commons.logging.impl.Log4JLogger??使用Log4J
    ?org.apache.commons.logging.impl.Jdk14Logger??使用JDK?1.4?Logging框架
    ?org.apache.commons.logging.impl.SimpleLog??使用Commons?Logging內置的簡單Log實現
    其他:
    總結一下,Commons?Logging會按照下列順序來指定具體的Log實現。
    ?如果定義了org.apache.commons.logging.Log系統參數,實用指定的Logging實現。
    ?如果在CLASSPATH里發現了Log4J,使用Log4J。
    ?如果使用的是JDK1.4,使用JDK1.4內置的Logging框架。
    ?如果都沒有找到,則使用Commons?Logging內置的簡單Log實現。
    posted @ 2006-12-18 15:38 Alex 閱讀(714) | 評論 (0)編輯 收藏

    key words : 職業規劃? 高薪

    原文見robbin的pdf,我整理了一下腦圖

    職業規劃與高薪之路.png
    posted @ 2006-12-17 13:25 Alex 閱讀(3456) | 評論 (6)編輯 收藏

    注意:這篇文章是由無人工介入的自動的機器翻譯系統翻譯完成。這些文章是微軟為不懂英語的用戶提供的, 以使他們能夠理解這些文章的內容。微軟不保證機器翻譯的正確度,也不對由于內容的誤譯或者客戶對它的使用所引起的任何直接的, 或間接的可能的問題負責。

    概要

    Microsoft SQL Server 2000 支持同一計算機上同時運行的多個 SQLServer 數據庫引擎實例。 以下是兩種類型的 SQLServer 數據庫引擎實例: 默認和命名。 只能有, 任何計算機上運行一個默認實例并且由默認實例運行計算機上的名稱標識它。 通常指定以下列格式: 計算機名和實例名稱
    computer_name\instance_name
    要 MicrosoftSQLServer2000JDBC, 連接命名實例通過 SQL 服務器 2000 MicrosoftTextDriver 必須指定端口號與命名實例, 代替的命名實例名稱相關聯如前面。

    更多信息

    要查找 SQLServer 實例端口號, 請按照下列步驟:
    1.在 Microsoft SQL Server 2000 服務器, 啟動 SQL Server 網絡實用工具。
    2.要從 實例 下拉菜單實例依次, 常規 選項卡。
    3.TCP/IP, 依次 屬性 。 注意, 在 屬性 對話框中出現端口號為此實例。

    當您連接到 SQLServer 通過 JDBC 連接 URL 中使用只要有該值,。 下面是典型連接 URL 的示例:

    jdbc:microsoft:sqlserver: / 1433; yourServerName / 用戶 = yourUser ; 密碼 = yourPwd :
    在本示例, 使用默認端口是 1433。 將此默認替換端口號為您命名實例。
    posted @ 2006-12-17 00:35 Alex 閱讀(1239) | 評論 (0)編輯 收藏

    key words: jsp,jstl,1.0,1.1,fn函數

    原來一直用struts,最近項目里有人用jstl,我也就順便拿來用,感覺還是不錯。

    過程中碰到一些小的問題總結如下:

    一。版本問題
    jstl存在1.0和1.1的差異問題,用EL建議需要在1.1的版本下,1.1的URI的標志為:
    <%@?taglib?uri="http://java.sun.com/jsp/jstl/core"?prefix="c"%>
    <%@?taglib?uri="http://java.sun.com/jsp/jstl/functions"?prefix="fn"%>

    注意,1.0版本沒有/jsp/.

    如果用的1.0會出現如下異常
    org.apache.jasper.JasperException:?/public/left_tree.jsp(100,24)?According?to?TLD?or?attribute?directive?in?tag?file,?attribute?items?does?not?accept?any?expressions
    ????org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:
    510)
    ????org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
    375)
    ????org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:
    314)
    ????org.apache.jasper.servlet.JspServlet.service(JspServlet.java:
    264)
    ????javax.servlet.http.HttpServlet.service(HttpServlet.java:
    802)
    ????org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:
    75)
    ????org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
    77)
    ????com.wellsoon.zfzw.webapp.common.VabAccessFilter.doFilter(VabAccessFilter.java:
    43)


    root?cause?



    二。打開EL

    <%@?page?contentType="text/html;charset=gb2312"?language="java"?isELIgnored="false"?%>

    前提是容器支持2.0,即使支持默認也未必打開,最安全的方式就是顯示打開 isELIgnored="false"

    三.fn的用法
    對于Vo里的一個List作length的計算或判斷很方便
    <table?width="160"?border="0"?cellspacing="0"?cellpadding="4">
    ????????????????????????
    <c:forEach?items="${menuInfos}"?var="m">
    ????????????????????????????
    <c:if?test="${fn:length(m.subMenus)>0}">
    ??????????????????????????
    <tr>
    ????????????????????????????
    <td>
    ????????????????????????????????
    <script?language="JavaScript">
    ??????????????????????????????????????
    var?tObj?=?new?treeClass("A1")
    ??????????????????????????????????????tObj.start();
    ?????????????????????????????????????tObj.m_start(
    "<c:out?value="${m.menuModule}"/>",0);
    ????????????????????????????????????
    <c:forEach?items="${m.subMenus}"?var="sub">
    ??????????????????????????????????????tObj.add_Sub(
    "<c:out?value="${sub.menuName}"/>","<%=path%>
    <c:out?value=
    "${sub.url}"/>","mymain");
    ????????????????????????????????????
    </c:forEach>
    ?????????????????????????????????????tObj.m_end();
    ??????????????????????????????????????tObj.end();
    ??????????????????????????????????????tObj.print();
    ?????????????????????????????????
    </script>
    ????????????????????????????
    </td>
    ????????????????????????
    </tr>
    ????????????????????????????
    </c:if>
    ????????????????????????
    </c:forEach>

    ????????????????????
    </table>
    ?
    四.tld的聲明可以在web.xml作顯式聲明也可以用http作直接URL聲明
    推薦用本地的方式.

    posted @ 2006-12-11 19:21 Alex 閱讀(2803) | 評論 (2)編輯 收藏

    key words: MiddleGen,hibernate,many to many,多對多

    如果你有如下表結構

    user(user_id,user_name)
    role(role_id,role_name)

    user_role(id,user_id,role_id)

    那么默認MiddleGen生成的是兩個一對多,但我們更多的情況是用many to many

    需要修改middlegen的build.xml文件

    <many2many>
    ????????????
    <tablea?generate="true"?name="user"/>
    ????????????
    <jointable?name="user_role"?generate="false"/>
    ????????????
    <tableb?generate="true"?name="role"/>
    ?????????
    </many2many>

    posted @ 2006-12-07 20:26 Alex 閱讀(908) | 評論 (0)編輯 收藏

    僅列出標題
    共15頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 无码国产精品一区二区免费式芒果 | 亚洲精品韩国美女在线| 亚洲欧洲日产韩国在线| 亚洲一区电影在线观看| 老司机午夜性生免费福利| 中文在线日本免费永久18近| 99在线视频免费| 日韩a级毛片免费观看| 亚洲熟女少妇一区二区| 亚洲高清视频在线播放| 亚洲熟妇久久精品| 插鸡网站在线播放免费观看| 16女性下面扒开无遮挡免费| 国产一区二区三区免费看| 国产亚洲综合久久系列| 亚洲国产精品99久久久久久| 9久热精品免费观看视频| 久久久久久久久免费看无码 | 国产一精品一AV一免费孕妇| 2048亚洲精品国产| 亚洲欧洲另类春色校园网站| 久久高潮一级毛片免费| 午夜电影免费观看| 久久精品国产亚洲AV麻豆网站| 国产成人亚洲精品无码AV大片| 久久午夜伦鲁片免费无码| 亚洲人成网站18禁止一区| 中文字幕乱码亚洲无线三区| 在线成人精品国产区免费| 亚洲国产成人久久一区WWW| 国产色在线|亚洲| 3d成人免费动漫在线观看| 亚洲精品无码成人AAA片| 亚洲综合色成在线播放| 中文字幕精品三区无码亚洲| 久久精品国产大片免费观看| 亚洲性久久久影院| 国产精品亚洲精品日韩电影| 好大好深好猛好爽视频免费| 亚洲免费在线视频观看| 久久综合国产乱子伦精品免费|