隨筆 - 11  文章 - 37  trackbacks - 0
          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

               摘要: Extjs官方于8月4日下午宣布發布Ext2.2版本。今天把demo加到服務器上面了,讓大家過來看看.  閱讀全文
          posted @ 2008-08-11 14:33 我為我狂 閱讀(5623) | 評論 (2)編輯 收藏
               最近在開源人網站上面看到了一個javarebel,說可以使Java class文件重新加載速度更快,節省了開發時間,而且修改了配置文件和在class中加入任何的代碼都不用重啟服務器(Tomcat等等),我喜出望 外,趕快去google了一下,真的有這個玩意。從google上面看到了兩篇文章:
          在javaeye上面:
          使用JavaRebel讓Scala走向動態化:
          http://www.javaeye.com/news/2331
          了解了是什么東西?
          在csdn上面:
          Java開發生產力視頻: 不重新部署 Web 模塊熱加載類(JavaRebel)
          http://blog.csdn.net/myeclipse_java/archive/2008/07/24/2707080.aspx
          明白了他們的用法.
          我就到這個上面下載了
          http://www.zeroturnaround.com/javarebel/
          最新版本的. 上面說的還要收錢,俺就用使用期限的吧!
          我直接就問開源人上面的冷雨是怎么用的啊? 直接他給他發過來了一個圖
          原來是JVM的一個插件.把這個熱部署的類加入就可以了,如下
          -noverify -javaagent:E:/codeSourse/J2EE-LIB/javarebel-1.2-M1/javarebel.jar
          我按照他的思路配置好了,從eclipse中的Tomcat插件啟動服務(tomcat),果然是有效的.首先就打印出來的javarebel 這個插件的信息.不錯不錯.安裝好了. 就等著能夠啟動開來使用呢?為什么spring的類庫不加載呢?好慢! 難道是我裝錯了嗎?還是?
             我等了好大以后才啟動開來.也總算是可以開發了.但是http://localhost:8080,
          難道得不到請求嗎?但是我看到瀏覽器上面的狀態條再前進啊.我確定應經請求到了. 就可太慢了.
              難道真的像網上說的能夠成為不重新部署 Web 模塊熱加載類嗎? 我不知道大家是否有所懷疑,或者是我的配置出現了錯誤所導致的.


          posted @ 2008-08-08 10:14 我為我狂 閱讀(3705) | 評論 (6)編輯 收藏

            今天我遇到了一個Data too long for column 的問題,我找了很多都沒有找到. 網上沒有這些問題.  我的JPA建模是這樣寫的:

           

              @javax.persistence.Lob
              @javax.persistence.Basic(fetch 
          = javax.persistence.FetchType.LAZY)
              @Field(name 
          = "文章內容", validator = @Validator(name = "string"))
              
          private String content;// 文章內容

           

                 他們生成數據庫中的字段對應的是Text類型的. 我在想還有什么比這個text類型更大的呢?  我一直在JPA的Lob上面下功夫. 有人是用@column  中的columnDefinition屬性進行控制的,但是我真的是不知道如何給這個columnDefinition  付值.  最后置只好到開源人論壇上面問了. 

            上面的回答是在一個表中 text類型的只能有一個..   我看數據庫中真的是有兩個text類型的字段.  把另外的一個text類型修改了varchar的.  終于成功了. 

          也不知道是mysql的問題,還是JPA映射的問題. 我別的數據庫沒有試. 希望給大家以后不要遇到這個問題.

          posted @ 2008-08-07 17:13 我為我狂 閱讀(4041) | 評論 (5)編輯 收藏
             最近想做一個開源技術的一個檔案,想讓大家過來說說都用到了什么開源項目?然后我就要對這些項目的教程進行整理,也許對大家以后也有用處,呵呵! 希望站長寬容。   
             我想做的就是對這些開源項目的作者、 svn、下載地址,和教程進行整理。  

            希望大家說說自己了解的開源項目技術。
            
            如果打開文章的朋友請雁過留聲哈!  算是能幫個忙吧!
          posted @ 2008-07-31 11:51 我為我狂 閱讀(1624) | 評論 (14)編輯 收藏

          ExtJS提供了一套強大的事件處理機制,通過這些事件處理機制來響應用戶的動作、監控控件狀態變化、更新控件視圖信息、與服務器進行交互等等。事件統一由Ext.EventManager對象管理,與瀏覽器W3C標準事件對象Event相對應,Ext封裝了一個Ext.EventObject事件對象。支持事件處理的類(或接口)Ext.util.Observable,凡是繼承該類的組件或類都支持往對象中添加事件處理及事件響應功能。
          全屏:
          http://www.vifir.com/easyjf/videos/event/play.html

          posted @ 2008-07-22 09:54 我為我狂 閱讀(1589) | 評論 (0)編輯 收藏

          組件可以直接通過new 關鍵子來創建,比如要創建一個窗口,使用new Ext.Window(),創建一個表格則使用new Ext.GridPanel()。當然,除了一些普通的組件以外,一般都會在構造函數中通過傳遞構造參數來指定組件的各種屬性。

          組件的構造函數中一般都可以包含一個對象,這個對象包含創建組件所需要的配置屬性及值,創建組件的時候會根據構造函數中的參數的屬性值來初始化組件,

          全屏:http://www.vifir.com/easyjf/videos/usePanel/play.html

          posted @ 2008-07-21 15:53 我為我狂 閱讀(1261) | 評論 (0)編輯 收藏

          我在網上看到好多的朋友問wlr單用戶的博客安裝失敗, 在這里我就做出一個視頻. 在安裝成功的基礎上我視圖把Ajax的上傳繼承到extjs中,希望對大家有所幫助.

          這個上傳的組件演示:   http://www.dhtmlx.com/docs/products/dhtmlxVault/index.shtml.

          全屏:http://www.vifir.com/easyjf/videos/upload/play.html


          dhtmlxVault的具體安裝:

          http://www.vifir.com/portal.ejf?cmd=topicShow&id=2523169



          posted @ 2008-07-21 10:14 我為我狂 閱讀(1061) | 評論 (0)編輯 收藏
          從下載源代碼到如何讓其彈出hello world, 不好也要發出來讓大家批評
          全屏:http://www.vifir.com/easyjf/videos/getstart/play.html

          ExtJS發布包目錄:

           adapter:負責將里面提供的第三方底層庫(包括Ext自帶的底層庫)映射為Ext所支持        的底層庫。

          build:壓縮后的ext全部源碼(里面分類存放)

          docsAPI幫助文檔。

          exmaples:提供使用ExtJS技術做出的小實例。

          resourcesExt UI資源文件目錄,如CSS、圖片文件都存放在這里面。

          source 沒有經過壓縮的Ext全部的源碼(里面分類存放) ,遵從Lesser GNU LGPL 開源的協議。

          Ext-all.js:壓縮后的Ext全部源碼。

          ext-all-debug.js:未經壓縮的Ext全部的源碼(用于調試)

          ext-core.js:壓縮后的Ext的核心組件,包括sources/core下的所有類。

          ext-core-debug.js:未經壓縮的Ext核心組件,包括sources/core下的所有類。


          posted @ 2008-07-14 16:43 我為我狂 閱讀(1430) | 評論 (1)編輯 收藏
          ExtJS是一個Ajax框架,是一個用javascript寫的,用于在客戶端創建豐富多彩的web應用程序界面。ExtJS可以用來開發 RIA(Rich Internet Application,富互聯網應用系統)的 AJAX應用框架, 在這里我就對他做一點簡單的介紹。
          http://www.vifir.com/easyjf/videos/extintro/play.html
          posted @ 2008-07-14 16:41 我為我狂 閱讀(1462) | 評論 (4)編輯 收藏
           好久沒有來這里了. 今天按照錄制書上了一個視頻,發過來讓大家看看.我知道做的差,請不要罵我啊.. 也是第一次.
              我在網上找了點資料,就錄制成視頻,也算是鍛煉一下.吧

          全屏:http://www.vifir.com/easyjf/videos/spket/play.html

          posted @ 2008-07-14 16:40 我為我狂| 編輯 收藏

                     最近學習了easyjweb,發現easyjweb和struts較量了,雖然說都傳統的基于請求的MVC思想,但是它竭盡所能是java代碼和頁面分開了,結果的確做到了這一點,在easyjweb項目的頁面上面你是找不到有java代碼的,你看看頁面的后綴都成了html了,不是jsp了。除此之外,easyjweb中還有獨特的一面,不僅實現了像struts一樣的MVC(MVC是easyjweb的核心),還有下面的具體實現:

          1、容器及通用業務邏輯封裝。作為一個旨在讓基于Java的Web應用程序開發變得直接、快速、簡易的框架,EasyJWeb提供了一個IoC容器,并對企業級應用中的一些通用業務邏輯(如分頁、查詢、DAO等)進行了抽象及封裝,提供了一套可以直接操作、應用企業資源的組件及API。

          2、代碼生成引擎及工具。僅僅依靠一個靈活、簡易的MVC核心引擎還不能最大限度的提高開發速度,因此EasyJWeb還提供了一個靈活、易用的代碼生成引擎及工具,通過使用代碼生成引擎,可以快速完成基于JavaEE平臺的企業級應用程序生成。如數據庫添刪改查(CRUD)代碼生成、自動頁面模版生成、自動配置文件管理等。

          3、EasyJWeb插件體系,項目中的各種實用功能的擴展,可以靈活地通過基于插件的形式安裝到EasyJWeb中,提供各種針對性的功能。如ajax實用插件、代碼生成插件等

             別的我也是不太了解,就MVC這方面說吧!不過我對easyjweb和struts都不是特別精通,就我對他們的了解說說我的看法吧!
          第一:先來看看他們的配置文件吧!他們都有web.xml,下面的配置easyjweb和struts必須有的。
          easyjweb中的web.xml文件的配置

          <?xml version="1.0" encoding="UTF-8"?>
          <web-app>
          <filter>
          <filter-name>CharsetFilter</filter-name>
          <filter-class>com.easyjf.web.CharsetFilter</filter-class>
          <init-param>
          <param-name>encoding</param-name>
          <param-value>utf-8</param-value> 
          </init-param>
          <init-param>
          <param-name>ignore</param-name>
          <param-value>true</param-value>
          </init-param>
          </filter>
          <filter-mapping>
          <filter-name>CharsetFilter</filter-name>
          <servlet-name>easyjf</servlet-name>
          </filter-mapping> 
            <servlet>
              <servlet-name>easyjf</servlet-name>
              <servlet-class>com.easyjf.web.ActionServlet</servlet-class>   
            </servlet>
            <servlet-mapping>
              <servlet-name>easyjf</servlet-name>
              <url-pattern>*.ejf</url-pattern>  
            </servlet-mapping> 
          </web-app>


          struts中的web.xml中的配置:

          <?xml version="1.0" encoding="UTF-8"?>
          <web-app xmlns="<easyjf-web>


          <module path="/hello" form="" scope="request"
            action="com.easyjweb.action.MessageAction" defaultPage="hehe">
            <page name="hehe" url="/message.html" type="template" />

          </module>
          </easyjf-web>


          sturts-config.xml中的配置:


          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "

          <struts-config>
            <data-sources />
            <form-beans >
             <form-bean name="productForm" type="com.cclen.forms.ProductForm"/>
            </form-beans>
           <action path="/marketWeb"
               type="com.cclen.actions.MarketWebAction"
               name="marketWebForm"
               scope="request">
               <forward name="listmarkweb"           path="/administrator/proxy/proxy_Add.jsp"></forward>
               </action>
            </action-mappings>
          </struts-config>


          在以easyjweb中的配置文件中,我們需要有hello.ejf來請求com.easyjweb.action.MessageAction的處理。     
          不過module這里還有比struts更牛比的東西配置呢,就是Module中也包含了Page對象,控制器,攔截器,注入的bean.
          這里可以參考easyjweb的文檔來具體的了解。。


          在struts里面中的配置文件中,我們需要有marketWeb.do來請求com.cclen.actions.MarketWebAction的處理。
          哦,他們的后綴名都可以隨便的改變,在需要在web.xml中配置,你改一下試試就可以明白了。

          第三:終于到了Action了,這個里面的東西我們來看看了,就我知道的說啊!在網上千萬可別罵我。
          1、easyjweb中三種的Action分別是IWebAction  AbstractCmdAction  AbstractPageCmdAction

           struts中有兩種的Acton分別是Action,DispatchAction

          他們要作為父類,你要實現他們中間的方法啊!

          2、easyjweb中的IWebAction相當于struts中的Action了啊!他們分別要實現的方法是:

          IWebAction中要實現的方法是:

          public Page execute(WebForm form, Module module) throws Exception;

          struts中的Action要實現的方法是:

          public ActionForward execute(ActionMapping mapping,ActionForm form,
             HttpServletRequest request,
             HttpServletResponse response) throws Exception ;

          從這里就可以看到easyjweb的簡易,他只有兩個參數,而struts中的Action方法要有四個參數,這給測試就帶來了麻煩啊!

          3、easyjweb中的AbstractCmdAction相當于struts中的DispatchAction了啊!即在一個Action中提供多個處理方法,比如說:
          AbstractCmdAction中有這樣的處理方法:
          public Page doAdd(WebForm form, Module module) throws Exception;
          public Page doDel(WebForm form, Module module) throws Exception;
          public Page doUpdate(WebForm form, Module module) throws Exception;

          在請求中使用easyJWebCommand或者cmd傳遞的參數直,會作為請求執行的方法名的構成。構成的規則為doXxxx()。
          如:

          xxx.ejf?easyJWebCommand=add,就會執行doAdd()方法了。
          這個easyjwebCommand和cmd是不用配置的,不用問他們擔心了。


          那么struts中的DispatchAction中就應該有這樣的方法了
          public ActionForward add(ActionMapping mapping,ActionForm form,
             HttpServletRequest request,
             HttpServletResponse response) throws Exception;

          public ActionForward del(ActionMapping mapping,ActionForm form,
             HttpServletRequest request,
             HttpServletResponse response) throws Exception;

          public ActionForward update(ActionMapping mapping,ActionForm form,
             HttpServletRequest request,
             HttpServletResponse response) throws Exception;
          在請求中要通過struts-config.xml中的Action配置的parameter參數來傳遞,
          如:
          <action path="/marketWeb"
               type="com.cclen.actions.MarketWebAction"
               name="marketWebForm"
               parameter="hahahaha"
               scope="request"/>
          marketWeb.do?hahahaha=del,就會執行方法
          public ActionForward del(ActionMapping mapping,ActionForm form,
             HttpServletRequest request,
             HttpServletResponse response) throws Exception;

           


          不過easyjweb中的AbstractCmdAction有一個默認的方法是:
          public Page doInit(WebForm form, Module module)
          這個方法是當你沒有傳入具體參數時,要調用的方法了。
          就是說用 執行xxx.ejf時,就是執行上面的方法了


          4、easyjweb中的AbstractPageCmdAction是非常智能的啊!struts中真的沒有了啊!easyjweb中特有的方法了。
          在AbstractCmdAction的基礎上,EasyJWeb提供了另外一個對視圖具有自動識別能力的AbstractPageCmdAction。該類能通過應用“慣例代替配置”來智能判斷程序中要使用的視圖模板,甚至不需要書寫方法簽名也可以調用視圖模板。如:
          public void doEdit(){}
          該方法中雖然沒有一句代碼,也沒有明確的視圖切換或轉向。但AbstractPageCmdAction會根據慣例原則,自動選擇edit.html文件作為視圖模板。
          這些牛牛人啊!還弄這么智能的東西出來啊。佩服佩服!

           

          第四:來看看easyjweb和struts對表單數據的獲取和返回吧! 分別用easyjweb中的IWebAction和struts中的Action來說明問題吧!
           1、用實現IwebAction就要實現方法
          public Page execute(WebForm form, Module module) throws Exception;
          看到了吧!其中只要兩個參數,webForm就可以解決獲取表單數據和返回頁面數據(返回頁面數據就是指在action中處理過的數據將添加到頁面上)
           
          在WebForm中可以直接使用WebForm.get("poropertyName")來得到文本參數,而對于二進制的內容,直接使用WebForm.getFileElement("poropertyName")來處理.
          一般不會用到form的,<form>元素用來定義前臺頁面表單的信息,一個WebForm就可以做到了。
          WebForm還提供了兩個方法:WebForm.toPo(Object obj):傳入一個對象,直接從WebForm中拷貝值到改對象中。

          WebForm.toPo(Class clazz):傳入一個類型,WebForm會初始化這個類型的實例再將WebForm中的值拷貝
          具體這兩個方法的有更多的用法,請參考easyjweb的文檔:
          www.easyjf.com

           

          而表示層返回數據的話,就要用new WebForm().addResult()把數據添加到Velocity上下文中。WebForm也提供了一個簡便的WebForm.addPo(obj)來處理多屬性的對象的值的添加

          還要注意這點啊 !WebForm在將數據保存到Velocity上下文時,不光要保存使用addResult方法和addPo方法放入的值,還要向Velocity上下文中保存textElement中的數據,意味著重復的數據可以不用在Action中重復的添加,這在應用中需要特別注意。

           

          2、用實現Action就要實現方法
          public ActionForward execute(ActionMapping mapping,ActionForm form,
             HttpServletRequest request,
             HttpServletResponse response) throws Exception ;
          MessageForm messageForm = (MessageForm) form;

          你可以配置ActionForm來取得數據,也可以通過request.getParameter(arg0)來去的數據,但是這里存在了情況了,但我不知道struts里面沒有沒更好的解決方法。比如說,對于二進制的內容,如果用到了org.apache.struts.upload.FormFile的話,你就必須用到ActionForm來取的數據了。

          返回到表示層的數據就request.setAttribute("",object);


          第五:頁面數據的輸出:

          1、easyjweb中用的是Velocity作為頁面引擎的,Velocity的語法簡單,易學,并且是美工最喜歡的html頁面,在這里你是找不到java的代碼的。
          2、struts有自己的標簽,或者用sun公司支持的jstl標簽,你不得不在頁面上引用對象的類型,因為你傳送到頁面上的對象他們是無法識別的。
          你可以看看你的jsp頁面的頂部有沒有這樣的代碼 import="java.sql.*,java.lang.*"這就是java代碼啊!


          第六:頁面的轉向。
          1、easyjweb中的處理控制器就交給了Module,其實一個Module是包含著IWebAction,而在IWebAction中,卻是在調用Module的資源。
          如果要返回一個Page模版頁面,只需要調用module.findPage("pageName")就能得到了。因為在Module中給我們配置了資源:
          如:
          <module path="/hello" form="" scope="request"
             action="com.easyjweb.action.MessageAction" defaultPage="hehe">
             <page name="hehe" url="/message.html" type="template" />
            </module>

          它<page name="hehe" url="/message.html" type="template" />就是給我們配置的模板資源,只要在com.easyjweb.action.MessageAction 中通過module.findPage("hehe")就可以調用message.html的模板了。也可以直接返回new Page(,,),如:return new Page("succ","/user/success.html","html")


          2、在struts中是把頁面控制交給了ActionMapping,ActionMapping通過調用findForward(),即ActionMapping.findForward("name")轉向。

          如:
           <action path="/product"
                      type="com.cclen.actions.ProductAction"
                      name="productForm"
                      parameter="method"
                      >
                      <forward name="listproduct" path="/administrator/product/listproduct.jsp"></forward>
                     </action>
            你需要在com.cclen.actions.ProductAction中這樣來指定頁面ActionMapping.findForward("listproduct");


          第六:我再重申一下在easyjweb中struts沒有的東西。

          easyjweb之所以能實現快速開發,是因為里面給我們提供了更好的實現,提供了工具類,強大的超級容器等等,由于俺是初學者,等俺精通了以后將慢慢補充easyjweb精彩方面!

           

           

           

          posted @ 2007-08-16 11:41 我為我狂 閱讀(2398) | 評論 (5)編輯 收藏
          主站蜘蛛池模板: 平舆县| 巨鹿县| 余江县| 晋中市| 舟曲县| 景德镇市| 武义县| 沙坪坝区| 靖安县| 正安县| 两当县| 金塔县| 天镇县| 大城县| 桐庐县| 台安县| 阿瓦提县| 军事| 博白县| 宁国市| 靖州| 双牌县| 鹿邑县| 滦平县| 越西县| 屏南县| 紫阳县| 金华市| 涪陵区| 江源县| 寿光市| 山丹县| 瑞金市| 九龙坡区| 金平| 长阳| 出国| 阳原县| 中阳县| 邯郸市| 青铜峡市|