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

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

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

    Loading...

    java .net

    2009年8月5日

    最近在學習如何使用maven,做了一個demo(基于S2S整合),總結一下與大家分享,期待與大家討論以期快速進步。

    一、maven介紹

    1、maven是什么

    http://maven.apache.org/
    官方解釋:Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。

    2、使用maven有什么好處,解決什么問題

    jar統一管理了:

    如果建立了一個本地的jar倉庫,那么所有人都是從倉庫里面下載jar,拷貝項目時只需要copy幾K的源碼即可!其次,依然是倉庫,使得每個人的jar版本都是一致的,不會出現因為版本不同,引起的莫名其妙的錯誤。
    項目的自動化:

    只需要mvn package命令,在eclipse里面,看run里面,只需要選擇就行了!它會自動的從編譯,測試開始,一直到打包,自動的運行,保證你的包沒有問題。

    我們在做多個不同的Java項目時,每個項目所用到的庫文件基本都是大同小異的,通常的做法是每個項目下面都會復制一份這些庫文件,甚至會把這些庫文件都提交到vss上去,這樣帶來的問題不僅是增大了項目占用的硬盤空間,而且也使包管理很混亂。

    我們可以這樣查看jar包的依賴關系,是不是很爽?!
    image

    還可以單元測試覆蓋率報表:

    image

    2、helloword

    1、下載Maven 附件中的maven3.jar 解壓到任意目錄

    2、安裝eclipse插件m2eclipse

    方式一:在線安裝 更新地址是:http://m2eclipse.sonatype.org/sites/m2e
    方式二:本地安裝 help-->install new softeware-->add-->name填寫maven-->archive..-->jar:file:/../m2e.zip!/-->ok
    安裝完成重啟eclipse,在Window-->Preferences-->Maven下配置

    image

    禁用eclipse啟動時更新maven index 主要是每次eclipse啟動時都更新很煩人

    image

    添加自己的maven

    3、新建maven項目

    按照下圖步驟

    image

    • groupId定義了項目屬于哪個組,這個組往往和項目所在的組織或公司存在關聯。譬如在googlecode上建立了一個名為myapp的項目,那么groupId就應該是com.googlecode.myapp.
    • artifactId定義了當前Maven項目在組中唯一的ID,groupId為com.googlecode.myapp的例子中,你可能會為不同的子項目(模塊)分配artifactId,如myapputil、myappdomain、myappweb等。
    • version指定了項目當前的版本——1.0SNAPSHOT。SNAPSHOT意為快照,說明該項目還處于開發中,是不穩定的版本。隨著項目的發展,version會不斷更新,如升級為1.0、1.1SNAPSHOT、1.1、2.0等。
    • name元素聲明了一個對于用戶更為友好的項目名稱

    點擊Finish完成

    4、maven項目結構

    下圖為基于maven項目結構,這里跟我們以前的項目結構很不一樣,以前的項目結構約定俗成的只有兩塊 一個src 一個webRoot,當然這些都可以隨意配置,比如WebRoot有的叫WebContent

    image
    這里maven倡導約定優于配置,maven的約定就是以下目錄結構
    src/main/java 下存放java類
    src/main/webapp 下存放頁面文件(需要手動創建)
    src/main/resources 下存放資源文件
    src/test/java 下存放單元測試代碼
    src/test/resources 下存放測試資源文件

    5、添加jar包

    只需維護pom.xml
    比如添加struts2-core
    <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.0.11.2</version>
    </dependency>

    我在172.20.66.230上部署了一個maven倉庫,訪問地址http://172.20.66.230:8081/nexus/

    maven會根據pom.xml中的配置訪問230的倉庫下載對應的jar source 以及doc,下載到哪?這要看maven3/conf/settings.xml 55:

    <localRepository>F:/Maven3/repository</localRepository>

    6、編寫代碼

    附件中有一個struts2+spring 的demo,解壓然后import eclipse

    在項目名上右鍵 run as -->Run Configurations

    image

    按圖配置,點擊Run即可。瀏覽器中訪問http://localhost:8080/MavenSSH/

    Maven運行的生命周期

    • 復制src/main/resources資源文件到輸出目錄

    • 編譯src/main/java下的源代碼

    • 復制src/test/resources下的測試用資源文件到測試輸出目錄

    • 編譯src/test/java下的測試用例

    • 運行測試用例

    • 打包生成

    ===========================

    • 以上是一個簡單的例子,只是用它獲取依賴的jar包 。maven還有很多諸如項目管理方面的功能,比如文檔編制、發布管理、配置管理...

    • 第一個次運行項目會比較慢,因為要下載jar包。

    • MavenSSH.rar是一個struts2與spring集成的例子,頁面用到了sitemesh div+css 也值得學習

    • 項目debug是運行在jetty(類似于tomcat的容器)中。

    posted @ 2011-04-18 16:09 豬 閱讀(1332) | 評論 (5)編輯 收藏

    如果部署GAE時正在upload files時退出,下次部署時會報錯

    Another transaction by user is already in progress for this app and major version. That user can undo the transaction with appcfg.py's "rollback" command

     

    找到eclipse中的GAE SDK目錄

    如:D:\eclipse\plugins\com.google.appengine.eclipse.sdkbundle.1.3.8_1.3.8.v201010161055\appengine-java-sdk-1.3.8\bin

     

    執行命令

    appcfg.cmd rollback 后面跟gae項目war所在目錄

    如 appcfg.cmd rollback D:/spring/eclipse_workspace/taobaoke/war

     

    執行:

    ********************************************************
    Warning: Future versions of the Dev App Server will require Java 1.6 or later. P
    lease upgrade your JRE.
    ********************************************************
    Reading application configuration data...
    2010-11-15 9:34:23 com.google.apphosting.utils.config.AppEngineWebXmlReader read
    AppEngineWebXml
    信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/ap
    pengine-web.xml
    2010-11-15 9:34:23 com.google.apphosting.utils.config.AbstractConfigXmlReader re
    adConfigXml
    信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/we
    b.xml
    2010-11-15 9:34:23 com.google.apphosting.utils.config.AbstractConfigXmlReader re
    adConfigXml
    信息: Successfully processed D:/spring/eclipse_workspace/taobaoke/war\WEB-INF/cr
    on.xml
    Beginning server interaction for taokeapp...
    0% Rolling back the update.
    Success.
    Cleaning up temporary files...

    posted @ 2010-11-15 09:55 豬 閱讀(425) | 評論 (0)編輯 收藏

    在網上無意搜到一個用Ext實現的淘寶客,恩 ,咱用GWT做一個車輪

    下了淘寶的 SDK for java就開干 參考API文檔按部就班

    在淘寶的沙箱里測試,很順利,乘勝前進,到正式環境下測試

    問題來了

    invalid signature

    網上搜了一通,有說時間戳不對,果不其然,GAE使用的是標準時間,整整差了8小時,遂在獲得的當前時間上加了8小時,OK

    invalid signature 可能的另一個原因是APP_KEY 或 APP_SERCET不正確,仔細檢查

     

    調用 taobao.item.get

     

    1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY, TaobaokeConstant.APP_SERCET);
    2 ItemcatsGetRequest req=new ItemcatsGetRequest();
    3 java.util.Calendar c=java.util.Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
    4 c.add(Calendar.HOUR, 8);
    5 req.setTimestamp(c.getTime().getTime()) ;
    6 req.setParentCid(new Long(0));
    7 ItemcatsGetResponse response=client.execute(req);
    8 return response.getItemCats();

     

    調用 taobao.taobaoke.items.get

     
    1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY,TaobaokeConstant.APP_SERCET);
    2 TaobaokeItemsGetRequest req=new TaobaokeItemsGetRequest();
    3 req.setFields("num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,shop_click_url,seller_credit_score,item_location,volume,taobaoke_cat_click_url,keyword_click_url");
    4 req.setCid(Long.parseLong(cid));
    5 req.setNick(TaobaokeConstant.NICK);
    6 req.setSort("commissionRate_desc");
    7 TaobaokeItemsGetResponse response=client.execute(req);
    8 return response.getTaobaokeItems();
     
    想用GAE JCache API 加入緩存以減輕壓力,但屢試不行,從緩存中取 的時候報錯
    沒找到原因
     
    改用自己寫的緩存,然后用App Engine Cron 服務管理緩存
     
    corn.xml
     
    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <cronentries>
    3   <cron>
    4     <url>/cron/recache</url>
    5     <description>Repopulate the cache every 1 hours</description>
    6     <schedule>every 1 hours</schedule>
    7   </cron>
    8 </cronentries>
    posted @ 2010-10-21 11:33 豬 閱讀(743) | 評論 (0)編輯 收藏
    posted @ 2010-06-13 09:54 豬 閱讀(434) | 評論 (0)編輯 收藏
         摘要: 01 var $j = jQuery.noConflict(); 02 //使用此方法驗證所有text textarea 是否含有非法字符 03 $j(document).ready(function(){ 04    $j("input[type='text']").each(functio...  閱讀全文
    posted @ 2010-06-13 09:53 豬 閱讀(2047) | 評論 (1)編輯 收藏
    一個喜歡coding的程序員,工作在北京,從事java web 開發,喜歡JavaScript,平時關注技術新聞,試用各種新框架、新語言,學海無涯,有時也迷茫
    平時沒事翻翻編程思想、瀏覽各位同行的blog,將各種實際中的技巧、方法拿來養眼,并用到自己的項目中感受快樂
    頭兒的評價:不管遇到什么難題,都會鉆窟窿盜洞把它解決掉

    求職簡歷
    posted @ 2010-05-19 14:58 豬 閱讀(282) | 評論 (0)編輯 收藏
    Compiling module com.capinfo.cdss.gwt.olap.Olap
    Compiling 12 permutations
    Compiling permutation 0...
    Compiling permutation 1...
    Compiling permutation 2...
    Compiling permutation 3...
    Compiling permutation 4...
    Compiling permutation 5...
    Compiling permutation 6...
    Compiling permutation 7...
    Compiling permutation 8...
    Compiling permutation 9...
    Compiling permutation 10...
    Compiling permutation 11...
    Compile of permutations succeeded
    Linking into D:\spring\workspace\fusionchart\war\olap.
    Link succeeded
    Compilation succeeded -- 291.925s

    在#.gwt.xml中添加支持Firefox
    <!-- User Agent -->
    <set-property name="user.agent" value="gecko1_8" /> 
    編譯的確變得很快,但IE中果真不好使
    posted @ 2010-05-19 10:19 豬 閱讀(1158) | 評論 (1)編輯 收藏
    GWT設置UncaughtExceptionHandler 以捕獲為捕捉的異常,這gwt在host mode編譯后的JavaScript如果出現錯誤,No errors in Hosted Mode and Compiled localy, but deployed to tomcat yields in errors
    這是惱人,加上UncaughtExceptionHandler起碼有一絲線索
    GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {
        public void onUncaughtException(Throwable throwable{
            String text = "Uncaught exception: ";
            while (throwable != null{
                StackTraceElement[] stackTraceElements = throwable
                        .getStackTrace();
                text += throwable.toString() + "\n";
                for (int i = 0i < stackTraceElements.lengthi++) {
                    text += "    at " + stackTraceElements[i] + "\n";
                }
                throwable = throwable.getCause();
                if (throwable != null{
                    text += "Caused by: ";
                }
            }
            System.err.print(text);
            text = text.replaceAll(" ", " ");
            Window.alert("系統錯誤:"+text);
        }
    });
    posted @ 2010-05-19 10:18 豬 閱讀(369) | 評論 (0)編輯 收藏
    java.lang.IllegalStateException:Should only call onDetach when the widget is attached to the browser's document

    這個異常是在com.google.gwt.user.client.ui.Widget protected void onDetach() 方法拋出的
    當頁面重新加載或離開頁面時會執行這個方法
    如果系統沒有正常初始化,會有這個異常
    郁悶的是No errors in Dev Mode but Compiled localy and deployed to tomcat in errors
    posted @ 2010-05-19 10:18 豬 閱讀(506) | 評論 (0)編輯 收藏

    private void showWaitMess(Frame window){
        final MessageBox box = MessageBox.wait("等待", "正在查詢數據,請稍后...", "查詢中...");
        final Element frame = window.getElement();
        final Timer t = new Timer() {
            @Override
            public void run() {
                if (ready(frame)) {
                    this.cancel();
                    box.close();
                }
            }
        };
        t.scheduleRepeating(100);
    }
    private native boolean ready(Element frame)/*-{
        return frame.contentWindow.document.readyState=="complete";
    }-*/;
    posted @ 2010-05-19 10:15 豬 閱讀(295) | 評論 (0)編輯 收藏
    又漲見識了
    IE8報下面錯誤,而且是我的機器不報,同事的機器報,試了4臺,兩個報,兩個不報,IE版本都一樣,沒想明白
    解決:1、查看是否有未關閉的html標簽,比如<table>而沒有</table> (我就是這個原因)
    2、是否在頁面未加載完前js代碼操作了body里的元素,將相關js代碼移到</body>后面



    網頁錯誤詳細信息

    用戶代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
    時間戳: Wed, 14 Apr 2010 08:33:56 UTC


    消息: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)
    行: 0
    字符: 0
    代碼: 0
    URI:  


    http://support.microsoft.com/kb/927917
    posted @ 2010-05-19 10:11 豬 閱讀(1853) | 評論 (0)編輯 收藏

           本來系統是由JSP+潤乾報表做的,做出一版來給人家客戶演示,人家覺得體驗不夠,也沒不夠絢麗,要求回去返工,主要是因為他們看過他們兄弟部門的一個類似系統,要求向那個系統靠攏,可殊不知人家那是.net做的C/S,交互體驗當然好了。

          面臨一個抉擇,換.net平臺做winform,然后用sql server Analysis Services 的現成組件,這要技術上肯定可行,但是需要購買一堆微軟的東西,錢啊。

          正好以前看過一些GWT的資料,以及基于GWT的開源框架,它的界面效果倒是可以滿足客戶的要求,遂毛遂自薦,想試試用GXT實驗是否能實現要求的功能和效果,同時也有其他同事考察了SAP的BI,水晶E表,IBM的Cognos,結果因功能實現不夠或者商務問題擱淺

          好像春節后沒多久就開始搞GWT,現在終于實現了(或是變相實現了)要求的功能、滿足了客戶的意見,很有成就感,期間經歷了兩次重構,現在采用的GXT提供的MVC模型,底層數據訪問是通過調用潤乾報表API,將潤乾報表運算結果轉化為一個List,然后交給GXT在頁面展現。

          頁面功能上,GXT挺全面,Grid列排序,隱藏顯示特定列,樹形展開收縮,用open chart封裝的統計圖表,數據鉆取,列標題分組,拖拽形式動態設置列維度、行維度以實現靈活查詢,將靈活查詢行列維度保存起來供以后隨時打開,將結果到處Excel、PDF、Word,動態設置查詢條件的顯示隱藏,動態的進度條提示等等

          接下來還要融入GIS,實現報表到地圖,地圖到報表。

          值得注意的是所有這些功能都是在一個窗口中完成的,實現了菜單、維度定義、報表、統計圖功能的融合,不用客戶點來點去,一步了然。

    posted @ 2010-05-19 10:11 豬 閱讀(456) | 評論 (0)編輯 收藏

    OLAP(On_line Analytical Processing聯機分析處理) 和 OLTP(On_line Transaction Processing聯機事務處理)

    OLTP:On_line Transaction Processing 聯機事務處理 ,以業務處理為主

    OLAP:On_line Analytical Processing     聯機分析處理,則是專門為支持復雜的分析操作而設計的,側重于對決策人員和高層管理人員的決策支持

    posted @ 2010-05-19 10:05 豬 閱讀(329) | 評論 (0)編輯 收藏
    因為客戶不滿意界面設計,人家看中了兄弟單位用的系統的樣子,可他卻不知那時cs程序,要想用bs做成那樣的效果還是先天不足,就這樣開始了GWT GXT的探索,一邊摸索一邊用GXT重寫這個系統
    現在想想 經歷了三個階段
    剛開始是demo階段,因為不知道路走不走的通,全面摸索GXT能實現的效果,也沒注意模塊的規劃,甚至就一個類
    而后發現還是能走通的,就開始添磚加瓦,發現代碼越加越亂,決心重構,定義了多個包,多個類負責不同的功能模塊,定義了一些Panel,一下子清晰多了,也遇到了不同模塊間互相調用的問題,自己想當然的辦法就是在一個類中聲明每個模塊作為屬性,就像一個總管,每個屋子的鑰匙我都有了,也認識到了這樣的缺點,一些模塊中的事件不等不在這個主管中定義
    現在Now,用一天時間再次改寫,仿照Gxt中的例子Explorer
    1、將各個模塊定義成com.extjs.gxt.ui.client.mvc.View,View中必須實現方法handleEvent(AppEvent event),負責處理發給自己的事件
    2、為每個View定義com.extjs.gxt.ui.client.mvc.Controller,每個Controller中包含View,在這里定義View要處理的事件
    3、在Dispatcher中注冊每個Controller

    這樣,每個View各司其職,他們各自有各自的功能,會接收為他們定義的所有事件并處理,發送事件Dispatcher.forwardEvent(appEvent);

    感覺這次改寫后 速度還沒有改寫前的快,現在每次操作url會自動添加Hash,想把它去掉,一直沒找到根結
    posted @ 2010-05-19 09:55 豬 閱讀(610) | 評論 (0)編輯 收藏
    Gwt中調用panel的setUrl方法嵌入一個網頁
    在網頁加載過程中加入wait
    在頁面中加入javascript
    var ready = false; 
    $j(document).ready(function(){
    ready = true; 
    });//這里用了jquery

    然后再java中聲明
    public native boolean ready(Element frame)/*-{
    return frame.contentWindow.ready?true:false;
    }-*/;

    然后在設置Frame的url時
    olapFrame = centerCp.setUrl(GWT.getHostPageBaseURL()
    + com.google.gwt.http.client.URL.encode("jsp/showOlap.jsp?dim="
    + dims + "&dimname=" + colLabels + ""));
    final MessageBox box = MessageBox.wait("等待", "正在查詢數據,請稍后...", "查詢中...");
    final Element frame = olapFrame.getElement();
    final Timer t = new Timer() {
    @Override
    public void run() {
    if (ready(frame)) {
    this.cancel();
    box.close();
    }
    }
    };
    t.scheduleRepeating(100);
    posted @ 2010-05-19 09:54 豬 閱讀(479) | 評論 (0)編輯 收藏
    organize imports應該是ctrl+shift+o的操作
    add import導入指定的類
    organize imports導入所有需要導入的類,并且如果有些import是沒用的,那么eclipse會自動刪除
    posted @ 2010-03-03 22:07 豬 閱讀(1289) | 評論 (0)編輯 收藏
    Gwt中調用panel的setUrl方法嵌入一個網頁
    在網頁加載過程中加入wait
    在頁面中加入javascript
    var ready = false;
    $j(document).ready(function(){
    ready = true;
    });//這里用了jquery

    然后再java中聲明
    public native boolean ready(Element frame)/*-{
    return frame.contentWindow.ready?true:false;
    }-*/;

    然后在設置Frame的url時
    olapFrame = centerCp.setUrl(GWT.getHostPageBaseURL()
    + com.google.gwt.http.client.URL.encode("jsp/showOlap.jsp?dim="
    + dims + "&dimname=" + colLabels + ""));
    final MessageBox box = MessageBox.wait("等待", "正在查詢數據,請稍后...", "查詢中...");
    final Element frame = olapFrame.getElement();
    final Timer t = new Timer() {
    @Override
    public void run() {
    if (ready(frame)) {
    this.cancel();
    box.close();
    }
    }
    };
    t.scheduleRepeating(100);
    posted @ 2010-03-03 22:07 豬 閱讀(226) | 評論 (0)編輯 收藏
    javascript 調用java代碼
    //調用JAVA靜態方法
    //規則: @全路徑類名::靜態方法名(方法簽名)(傳入參數)
    //@com.capinfo.cdss.gwt.olap.client.ui.PartOlapCenterTab::saveOlapState

    (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava

    /lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)

    (saveName,dims,rowDims,colDims,sql,colLabels,expandInfo,hideInfo,exp,field,remark);
    //調用JAVA非靜態方法
    //規則:實例對象.@全路徑類名::方法名(方法簽名)(傳入參數)
    //this.@com.capinfo.cdss.gwt.olap.client.ui.PartOlapCenterTab::saveOlapState

    (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava

    /lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)

    (saveName,dims,rowDims,colDims,sql,colLabels,expandInfo,hideInfo,exp,field,remark);


    //調用JAVA的非靜態屬性
    //規則:實例對象.@全路徑類名::屬性名
    //var field=this.@com.capinfo.cdss.gwt.olap.client.ui.PartOlapCenterTab::field;

    參考:http://java.sun.com/j2se/1.4.2/docs/guide/jni/spec/types.html#wp16432
    http://yonglin4605.javaeye.com/blog/568045
    http://yonglin4605.javaeye.com/blog/564829
    posted @ 2010-03-03 22:06 豬 閱讀(652) | 評論 (0)編輯 收藏
    在*.gwt.xml中加入 顯示中文
    <inherits name="com.google.gwt.i18n.I18N"/>
    <extend-property name="locale" values="zh" />
    在頁面中加入
    <meta name="gwt:property" content="locale=zh" >
    posted @ 2010-03-03 21:44 豬 閱讀(518) | 評論 (0)編輯 收藏
    調用panel的setUrl方法嵌入一個網頁
    要訪問這個網頁中的js變量 var abc
    setUrl返回一個Frame

    public native void jsGetVar(Element element)/*-{
    var abc = element.contentWindow.abc;
    //element.contentWindow.document.getElementById("name");訪問element
    }-*/;

    調用 jsGetVar(frame.getElement());

    參考:http://tailorcai.javaeye.com/blog/186897
    posted @ 2010-03-03 21:44 豬 閱讀(397) | 評論 (0)編輯 收藏
    在網上搜索了很多部署gwt到tomcat的blog,吸取了大家的經驗,又發現一些問題,總結一下
    我是用的Google Plugin for Eclipse ,跟用gwt的sdk編譯有點點不一樣
    1、在gwt項目右鍵Google > GWT Compile,就會在項目中的war中得到編譯后的文件
    To run the application as JavaScript in what GWT calls "production mode", compile the application by right-

    clicking the project and choosing Google > GWT Compile.
    參考:http://code.google.com/webtoolkit/usingeclipse.html#compiling
    2、將war中這些文件復制到tomcat webapp/應用 目錄下
    看一下WEB-INF\classes是不是有相應的class文件,要是沒有用eclipse編譯后復制過來
    3、這樣就需要gwt-user.jar了
    url中也不需要?gwt.codesvr=172.20.66.140:9997這樣的參數了
    4、打開tomcat訪問相應html可能什么都出不來,或者訪問數據庫時出錯,查看gwt編譯時控制臺輸出,是不是跟web.xml中配的

    Servlet mapping是不是對應,
    比如
    Linking into D:\spring\workspace\fusionchart\war\olap.
    Link succeeded
    Compilation succeeded -- 92.640s
    我的web.xml原來是
    <servlet-mapping>
    <servlet-name>olap</servlet-name>
    <url-pattern>/com.capinfo.cdss.gwt.olap.Olap/olap</url-pattern>
    </servlet-mapping>
    要改成
    <servlet-mapping>
    <servlet-name>olap</servlet-name>
    <url-pattern>/olap/olap</url-pattern>
    </servlet-mapping>
    相應html中原來是
    <script type="text/javascript" language="javascript" src="com.capinfo.cdss.gwt.olap.Olap/com.capinfo.cdss.gwt.olap.Olap.nocache.js"></script>
    改成
    <script type="text/javascript" language="javascript" src="olap/olap.nocache.js"></script>
    還沒鬧清楚為什么會這樣
    跟eclipse自動編譯有關?高人告知啊
    posted @ 2010-03-03 21:43 豬 閱讀(676) | 評論 (1)編輯 收藏
    ext-gwt 設置日期格式

    DateField date = new DateField();
    date.setPropertyEditor(new DateTimePropertyEditor("yyyy-MM-dd"));
    posted @ 2010-03-03 21:43 豬 閱讀(572) | 評論 (0)編輯 收藏
    如果要去掉此提示,打開SQL 2008 在最上面 工具-〉選項-〉左側有個 設計器-〉表設計器和數據庫設計器 -> 阻止保存要求重新創建表的更改(右側) 把鉤去即可

    參考:http://www.cnblogs.com/ajayumi/archive/2009/04/08/1431429.html
    posted @ 2010-03-03 21:42 豬 閱讀(740) | 評論 (0)編輯 收藏
    連接Sql Azure
    微軟早就公布Sql Azure可以使用了,今天切身體驗了一下,方法看下面鏈接
    http://blogs.msdn.com/sqlcrd/archive/2009/12/28/sql-azure.aspx

    測試asp.net連接時,啟動項目報錯:
    Windows Azure Tools: Failed to initialize the Development Storage service. Unable to start Development Storage.

    Failed to start Development Storage: the SQL Server instance ‘localhost\SQLExpress’ could not be found.   Please configure the SQL Server instance for Development Storage using the ‘DSInit’ utility in the Windows Azure SDK.
    解決方法:
    go to the "Windows Azure SDK Command Prompt"
    執行:
    DSInit /sqlInstance:. /forceCreate

    再次重新啟動,驚喜,報一堆這樣的錯誤:

    命名空間“http://schemas.microsoft.com/developer/msbuild/2003”中的“PropertyGroup”。 的子元素
    命名空間“http://schemas.microsoft.com/developer/msbuild/2003”中的“ServiceHostingSDKInstallDir”。
    無效。應為可能元素的列表: 命名空間“http://schemas.microsoft.com/developer/msbuild/2003”中的“Property”。。   

    C:\Program Files\MSBuild\Microsoft\Cloud Service\v1.0\Microsoft.CloudService.targets    9    6    雜項文件

    鬧了半天是因為剛才
    開著"Windows Azure SDK Command Prompt"
    關了就OK了
    posted @ 2010-03-03 21:42 豬 閱讀(346) | 評論 (0)編輯 收藏
    今天上班發現訪問公司局域網里的計算機共享不好使了,輸入正確的用戶名密碼,也提示不正確,差點就還原系統了,最后Google到了方法: WIN7電腦上開始 search 輸入sec , 打開local security policy, 找到security settings\local policies\Network Security: LAN Manager authentication level, the default vaule 是 not defined. 改為"Send NTLM response only"后即可. 參考:http://bbs.pcbeta.com/thread-511161-1-1.html
    posted @ 2010-03-03 21:41 豬 閱讀(1732) | 評論 (0)編輯 收藏
    http://www.infzm.com/content/39708 一直比較喜歡南方周末,不像一些報紙媒體報喜不報憂,想南方為追求事實真相的記者致敬!!! 另發句牢騷:對北京的除雪工作甚是不滿,要政府干啥吃的
    posted @ 2010-01-08 11:32 豬 閱讀(237) | 評論 (0)編輯 收藏
    余年已七十有余,一朝怛化,揆諸生寄 死歸之理,一切無所 縈懷,惟我瞻四方,蹙國萬里,民窮財盡,實所痛心,生平不喜多言,往日曲突徒薪之謀,國人或不盡省記,今則本識途之驗,為將死之鳴,愿我國人靜聽而力行 焉!則余生雖死猶生,九原瞑目矣。國雖微弱,必有復興直道,亦至簡單。 勿因我見而輕起政爭,勿尚空談而不顧實踐,勿興不急之務而浪用民財,勿信過激言行之說而自搖邦本。講外交者,勿忘鞏固國防;司教育者,勿忘 保存國粹;治家者,勿棄國有之禮教;求學者,勿鶩時尚之紛華。 本此八勿,以應萬有,所謂自力更生者在此,轉弱為強者亦在此矣。余生平不事生產,后人宜體我樂道安貧之意,喪葬力崇節簡,殮以居士服,毋以葷腥饋祭。
    好一個 勿興不急之務而浪用民財

    引自:時寒冰 -- 騰訊博客 http://shihanbing.qzone.qq.com
    posted @ 2010-01-08 11:31 豬 閱讀(241) | 評論 (0)編輯 收藏

    java.lang.InstantiationException

    在Struts creating form bean的時候遇到這個異常

    在form bean 中加一個無參的構造函數就Ok了

    posted @ 2009-12-29 12:19 豬 閱讀(618) | 評論 (0)編輯 收藏

    驚聞諸如趕集網\263這類網站上的租房信息都被中介代理買斷了,只有他們能看到,天理何在阿
    在這發一個,氣死我了

    自己的房子出租

    房屋信息:出租西三旗橋東南角常秀家園南北通透三居住房一套,面積80平米,6層的6層。三室為正規三室無隔斷,主臥朝陽20平左右,有陽臺,2次臥朝北面積10平左右。
    房屋裝修為中裝,新刷白墻,房間整潔干凈,設施齊全。天然氣入戶,電熱水器,上網方便。
    房屋周邊信息:小區周邊交通設施方便,有二十幾趟公交車,下樓小區門口就有運通103、運通109、運通118三趟公交始發。
    離小區步行5分鐘的公交站有919、307、315、345、379、393、398、407、618、625、670、629、753、810、819、運通117等N趟四通八達
    的公交車,其中的919大站快車,919區間等八達嶺高速的直達車,在上班高峰時間直達三環馬甸只需不到半小時時間。919大站
    快車一站直達起家豁子(換乘10號線地鐵)3站德勝門站(換乘地鐵2號線)。小區離13號線城鐵龍澤站僅2站地公交。周邊商業圈發達并正在迅速崛起中,購物及吃飯都很方便
    ,京客隆、超市發、肯德基、烤鴨店、老家肉餅、蘇寧電器、購物中心、24小時藥店……環繞周邊應有盡有。
    出租條件:房屋覓有正當職業,無不良嗜好的有為青年出租,希望生活習慣良好,收入穩定,長期出租,可整租也可單租,全天看房。中介勿擾,謝謝~
    聯系方式:13810428318 QQ 122088025

    做編程的勞苦兄弟優惠


    這有圖
    http://beijing.koubei.com/fang/detail-rent-r38c4e1aede9546588a7150079255ec2d.html
    posted @ 2009-12-02 14:15 豬 閱讀(204) | 評論 (0)編輯 收藏

    request.getInputStream() 和 request.getReader()不能同時調用,否則會引發java.lang.IllegalStateException異常。

    API中有寫:

    getInputStream

    public ServletInputStream getInputStream()
    throws java.io.IOException
    Retrieves the body of the request as binary data using a ServletInputStream. Either this method or getReader() may be called to read the body, not both.
    Returns:
    a ServletInputStream object containing the body of the request
    Throws:
    java.lang.IllegalStateException - if the getReader() method has already been called for this request
    java.io.IOException - if an input or output exception occurred
    posted @ 2009-10-19 13:48 豬 閱讀(3066) | 評論 (0)編輯 收藏

    eclipse中如果選中一個變量,則在本源文件中高亮顯示相同的變量

    Window->Preferences,在type filter text 中輸入Mark Occurrences

    在Java-Editor-Mark Occurrences中將Mark occurrences of the selected element in the current file.選中OK即可

    posted @ 2009-10-17 20:41 豬 閱讀(1340) | 評論 (0)編輯 收藏
    下午頭兒出去了,這周一口氣粘帖復制了14個Action20個jsp,沒什么技術含量,完全是粘帖復制,我在等待什么?
    posted @ 2009-10-17 20:40 豬 閱讀(197) | 評論 (0)編輯 收藏

    工作快三年了,一直沒有用到spring,做的幾個項目全部基于struts+hibernate,昨天忙完手頭的活兒,自己建了個struts+spring+hibernate的demo,能用MyEclipse自動生成的全部自動生成,表映射、pojo、SessionFactory、applicationContext.xml、struts-config.xml都自動生成了,弄了兩個jsp,一個add,一個view

    運行發現,spring未被加載,原因找來找去找不到,最后還是看了以前寫的一篇blog,可能存在重復jar包,有沖突,確實發現Myeclipse自動鍵入的jar包好多好多,而且有的有重復,搗鼓出以前做的例子,復制lib里面的jar包,果然OK了,實現了增查。

    spring確實是個好東西,強大、強大。

    Google SSH整合的例子,發現都是Struts2SpringHibernate了,俺還struts1呢,out了

    posted @ 2009-10-17 20:39 豬 閱讀(310) | 評論 (0)編輯 收藏
    轉自:http://pengjiayou.com/blog/fedora-10-auto-install-scripts
    easyLife 是另一款和 autoten 類似的軟件,是剛剛才發現的,不過其官方網站打不開,需翻墻解決,我找到了它的下載頁面,在 sf.net 上,請直接點擊這里下載最新的 easylife-1.1-1.fc10.noarch.rpm 。

    easyLife 允許你配置 Fedora 10 的各軟件,只需用鼠標點擊就搞定了!它的主要特性如下:

    • 為你系統中的常規用戶添加 sudo 命令
    • 自動安裝 Flash Player 插件
    • 安裝各種 Codecs (視頻、音頻解碼庫等)
    • 安裝額外字體
    • 安裝 Livna 軟件倉庫以安裝其它額外及非免費軟件
    • 安裝 Skype
    • 為 Firefox 安裝 Sun Java 和 Sun Java Plugin 插件
    • 用 system-switch-java 整合 Sun Java
    • 安裝 Adobe Raeder
    • 安裝其他軟件等
    用esayLife安裝來Flash Player 挺好用,真的是省了很多事,可能對我這個Linux初學者不是啥好事
    posted @ 2009-10-16 17:56 豬 閱讀(278) | 評論 (0)編輯 收藏
    google app engine對String長度有限制,里面中有個com.google.appengine.api.datastore.Text類型以替換長String,但是換了com.google.appengine.api.datastore.Text后不能向數據庫保存了,就單單這個字段不能保存,看數據庫列中就沒有這個字段,google中找到 說要在字段前加@Enumerated,但是在我這也不好使,后來又找到要加
    @Persistent(serialized="true", defaultFetchGroup="true") 
        private Text text;
    //    private String text;
    恩,這下好使了
    posted @ 2009-10-16 17:54 豬 閱讀(486) | 評論 (1)編輯 收藏
    開發中遇到這個異常:
    NestedThrowablesStackTrace:
    Attempt was made to manually set the id component of a Key primary key. If you want to control the value of the primary key, set the name component instead.
    org.datanucleus.exceptions.NucleusUserException: Attempt was made to manually set the id component of a Key primary key. If you want to control the value of the primary key, set the name component instead.


    原來的修改代碼是這樣些的:
    public void attachDirty(UrlTarget instance) {
            PersistenceManager pm = null;
            try {
               
                pm = PMF.get().getPersistenceManager();
                UrlTarget ut = (UrlTarget) pm.getObjectById(UrlTarget.class, instance.getId());
                ut.setName(instance.getName());
                ut.setRemark(instance.getRemark());
                ut.setUrl(instance.getUrl());
               pm.makePersistent(ut);
            } catch(Exception ex){
                ex.printStackTrace();
            }finally {
                if(pm != null)pm.close();
            }
           
        }

    public UrlTarget findById(Long id) {
            PersistenceManager pm = PMF.get().getPersistenceManager();
            try{
                return (UrlTarget) pm.getObjectById(UrlTarget.class, id);
            }catch(Exception ex){
                ex.printStackTrace();
            }finally {
                pm.close();
            }
            return null;
        }
    在利用findById方法得到對象后修改,但是findById中pm已經關閉,這就是錯誤的原因了
    posted @ 2009-10-14 18:01 豬 閱讀(413) | 評論 (0)編輯 收藏

    來自http://net.zdnet.com.cn/network_security_zone/2008/0519/869835.shtml

    一.簡介

    vi是unix世界中最通用的全屏編輯器,linux中是用的是vi的加強版vim,vim同vi完全兼容,vi就是"visual interface"的縮寫。它可以執行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據自己的需要對其進行定制,這是其它編輯程序所沒 有的。

      vi不是一個排版程序,它不象Word或WPS那樣可以對字體、格式、段落等其他屬性進行編排,它只是一個文本編輯程序。

      vi沒有菜單,只有命令,且命令繁多。只要在命令行上鍵入vi就可進入vi的編輯環境。vi有三種狀態:命令模式,文本輸入模式和末行模式。鍵入vi回車后首先進入vi的命令模式。

    在命令模式下用戶輸入的任何字符都被Vi當作命令加以解釋執行,如果用戶要將輸入的字符當作是文本內容時,則首先應將Vi的工作模式從命令模式切換到文 本輸入模式。在命令模式下,按一下"a"("A")鍵或者”i” ("I")或者"o"("O")鍵,即進入插入態文本輸入模式。按"a"鍵,插入到當前光標的后面;按"i"鍵,在當前光標處插入;按"A"鍵,在當前光 標所在行的最后插入;按"I"鍵,在當前光標所在行的開頭插入。在文本輸入模式下,按Esc鍵,即回到命令模式。

    末行模式也稱ex轉義模式。Vi有一個專門的“轉義”命令,可訪問很多面向行的Ex命令。在命令模式下,用戶按“:”鍵即可進入末行模式下,此時Vi會 在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個“:”作為末行模式的提示符,等待用戶輸入命令。多數文件管理命令都是在此模式下執行的(如把編 輯緩沖區的內容寫到文件中等)。末行命令執行完后,Vi自動回到命令模式。

      例如:

      :1,$s /A/a/g

      則從文件第一行至文件尾將大寫A全部替換成小寫a。

      若在末行模式下輸入命令過程中想轉換的到命令模式,可按鍵,或用退格鍵將輸入的命令全部刪除之后,再按一下退格鍵,即可使Vi回到命令模式下。

      如果要從命令模式轉換到編輯模式,可以鍵入命令a或者i;如果需要從文本模式返回,則按Esc鍵即可。在命令模式下輸入“:”即可切換到末行模式,然后輸入命令。

    Vi中的許多命令都要用到行號及行數等數值。若編輯的文件較大時,自己去數是非常不方便的。為此Vi提供了給文本加行號的功能。這些行號顯示在屏幕的左 邊,而相應行的內容則顯示在行號之后。 需要說明的是,這里加的行號只是顯示給用戶看的,它們并不是文件內容的一部分。

      當用Vi建立一個新文件時,在進入Vi的命令中也可以不給出文件名,當編輯完文件需要保存數據時,再由用戶指定文件名。

    進入Vi時,用戶不僅可以指定一個待編輯的文件名,而且還有許多附加操作。如果希望在進入Vi之后,光標處于文件中特定的某行上,可在Vi后加上任選 項+n,其中n為指定的行數。例如 鍵入命令:vi +3 example.txt后,光標將位于文件example.txt中的第3行上。

      二.vi常用的命令

      1.插入(Insert)命令

      Vi提供了兩個插入命令:i 和 I命令

      (1)i命令

      插入文本從光標所在位置前開始,并且插入過程中可以使用鍵刪除錯誤的輸入。此時Vi處于插入狀態,屏幕最下行顯示“--INSERT--”(插入)字樣。

      例1,有一正在編輯的文件,如下所示:

      Welcome to vi world!Come on!

      ~

      ~

      光標位于第一個“!”上,需在其前面插入:

      This is an example!

      使用i命令,并輸入相應文本后,屏幕顯示如下:

      Welcome to vi world This is an example!!Come on!

      ~

      ~

      由此例可以看到,光標本來是在第一個“!”處,但是由于是從光標所在位置前開始插入,所以這個“!”就被擠到了新插入的文本之后。

      (2)I命令

      該命令是將光標移到當前行的行首,然后在其前插入文本.

      2.光標移動操作在屏幕上移動

    全屏幕文本編輯器中,光標的移動操作無疑是最經常使用的操作了。用戶只有熟練地使用移動光標的這些命令,才能迅速準確地到達所期望的位置處進行編輯。

    Vi中的光標移動既可以在命令模式下,也可以在文本輸入模式下,但操作的方法不盡相同。

    (1)在文本輸入模式下,可直接使用鍵盤上的四個方向鍵移動光標。

    (2)在命令模式下,有很多移動光標的方法。不但可以使用四個方向鍵來移動光標,還可以用h、j、k、l這四個鍵代替四個方向鍵來移動光標,這樣可以避免 由于不同機器上的不同鍵盤定義所帶來的矛盾,而且使用熟練后可以手不離開字母鍵盤位置就能完成所有操作,從而提高工作效率。

    3.在屏幕上移動

    Vi提供了三個關于光標在全屏幕上移動并且文件本身不發生滾動的命令。它們分別是H、M和L命令。

    (1)H命令

    該命令將光標移至屏幕首行的行首(即左上角),也就是當前屏幕的第一行,而不是整個文件的第一行。利用此命令可以快速將光標移至屏幕頂部。若在H命令之前 加上數字n,則將光標移至第n行的行首。值得一提的是,使用命令dH將會刪除從光標當前所在行至所顯示屏幕首行的全部內容。

    (2)M命令

    該命令將光標移至屏幕顯示文件的中間行的行首。即如果當前屏幕已經充滿,則移動到整個屏幕的中間行;如果并未充滿,則移動到文本的那些行的中間行。利用此 命令可以快速地將光標從屏幕的任意位置移至屏幕顯示文件的中間行的行首。例如,在上面屏幕顯示的情況下(不論光標在屏幕的何處),在命令模式下,輸入命令 M之后,光標都將移到add這一行的字母a上。同樣值得一提的是,使用命令dM將會刪除從光標當前所在行至屏幕顯示文件的中間行的全部內容。

    (3)L命令

    當文件顯示內容超過一屏時,該命令將光標移至屏幕上的最底行的行首;當文件顯示內容不足一屏時,該命令將光標移至文件的最后一行的行首。可見,利用此命令 可以快速準確地將光標移至屏幕底部或文件的最后一行。若在L命令之前加上數字n,則將光標移至從屏幕底部算起第n行的行首。同樣值得一提的是,使用命令 dL將會刪除從光標當前行至屏幕底行的全部內容。

    4.編輯命令

    讓我們看看最簡單也是最常用的編輯過程:沒有人不犯錯誤。所以遲早你會碰到修改你輸入的文本的時候。實際上花在字處理上的大多數時間是修改而不是輸入新的東西。因此,你要知道如何方便地修改就很重要。

    (1)x--刪除一個字符

    刪除文字的最簡單的方式是用x。這個命令的結果是光標所處的字符的消失,后面的文字左移動。如果你刪除的字符是一行最后的一個字符,那么光標將向左移動一個,這樣光標就不會停留在不存在的字符的下面了。假如沒有任何文字了,喇叭就叫。

    (2)d--刪除對象

    這個命令的右邊還要有一定的文字對象。文字對象就是一塊文字。他右邊接的就是在控制光標移動的那些字符。例如 w 表示向前一個單詞,那么 dw 將刪除下一個單詞。5w 表示前進5個單詞,那么 d5w 將刪除他們。

    (3)dd--刪除一行

    最常用的 d 系列命令之一。和前面一樣, 5dd 將刪除 5 行

    (4)D--整個刪除

    大寫形式的 D 用來刪除從光標到行尾。和 d$ 一樣效果。

    (5)u--恢復

    要后悔嗎?他不僅僅撤消刪除,還撤消你所有的編輯工作。

    (6).--重復

    重復編輯工作。

    5.退出Vi

    當編輯完文件,準備退出Vi返回到shell時,可以使用以下幾種方法之一。

    (1)在命令模式中,連按兩次大寫字母Z,若當前編輯的文件曾被修改過,則Vi保存該文件后退出,返回到shell;若當前編輯的文件沒被修改過,則Vi直接退出, 返回到shell。

    (2)在末行模式下,輸入命令 :w Vi保存當前編輯文件,但并不退出,而是繼續等待用戶輸入命令。在使用w命令時,可以再給編輯文件起一個新的文件名。

    例如:w newfile

    此時Vi將把當前文件的內容保存到指定的newfile中,而原有文件保持不變。若newfile是一個已存在的文件,則Vi在顯示窗口的狀態行給出提示信息:

    File exists (use ! to override)

    此時,若用戶真的希望用文件的當前內容替換newfile中原有內容,可使用命令

    :w! newfile

    否則可選擇另外的文件名來保存當前文件。

    (3)在末行模式下,輸入命令 :q 系統退出Vi返回到shell。若在用此命令退出Vi時,編輯文件沒有被保存,則Vi在顯示窗口的最末行顯示如下信息:

    No write since last change (use ! to overrides)

    提示用戶該文件被修改后沒有保存,然后Vi并不退出,繼續等待用戶命令。若用戶就是不想保存被修改后的文件而要強行退出Vi時,可使用命令:q! Vi放棄所作修改而直接退到shell下。

    (4)在末行模式下,輸入命令 :wq Vi將先保存文件,然后退出Vi返回到shell。

    (5)在末行模式下,輸入命令 :x 該命令的功能同命令模式下的ZZ命令功能相同。

    來自:http://net.zdnet.com.cn/network_security_zone/2008/0519/869835.shtml

    posted @ 2009-10-14 17:54 豬 閱讀(257) | 評論 (0)編輯 收藏
    posted @ 2009-08-05 10:00 豬 閱讀(1353) | 評論 (4)編輯 收藏

    公告

    希望有一天

    我能用鼠標雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導航

    <2009年8月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網絡

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产精品xo在线观看| 久久久久亚洲av毛片大| 最近最新中文字幕完整版免费高清| 国产无遮挡裸体免费视频在线观看| 免费国产午夜高清在线视频| 一级毛片在线观看免费| 在线看片v免费观看视频777| 日韩免费高清视频| 亚洲人成人无码网www国产| 日韩亚洲精品福利| 亚洲国产香蕉碰碰人人| 亚洲欧洲日产v特级毛片| 精品无码专区亚洲| 久久久精品国产亚洲成人满18免费网站| 日韩视频在线观看免费| 无码人妻一区二区三区免费手机| 在线免费观看视频你懂的| 亚洲综合无码AV一区二区| 亚洲AV无码久久精品成人 | 热99re久久精品精品免费| 亚洲中文字幕久久久一区| 亚洲伊人久久大香线蕉影院| 亚洲欧美日韩国产成人| 亚洲av中文无码乱人伦在线观看| 中文字幕在线免费观看视频| 95老司机免费福利| 四虎影视永久免费观看地址| 亚洲国产精品无码久久SM | 区久久AAA片69亚洲| 亚洲国产成人久久精品动漫| 亚洲熟妇久久精品| 中文字幕免费在线视频| 国产福利视精品永久免费| 日本免费观看网站| 亚洲AV永久青草无码精品| 亚洲国产成人精品激情| 香蕉视频在线免费看| 希望影院高清免费观看视频| 伊人亚洲综合青草青草久热| 亚洲国产精品日韩在线观看| 国内成人精品亚洲日本语音|