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

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

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

    Dev Zone
    偏執狂才能生存,人生/事業的路上需要再堅持一下
    但是又怎么說得清堅持的結果,道得盡堅持的含義

         發現一個問題,使用struts進行文件上傳,如果有些參數沒有完全定義在ActionForm中,需要從request.getParameter獲取,在表單提交并且validate失敗返回input頁面時,這部分需要從request.getPrameter獲取的參數數據都丟失了,即使再對request進行multipart解析也不能得到。

         經過分析,發現struts的ActionServlet在接收到multipart請求之后,在RequestProcessor中會對request進行封裝:MultiRequestWrapper,然后在Action執行完之后,又將已經封裝的request重新還原。以下是部分代碼,截直RequestProcessor:

    封裝:
        protected HttpServletRequest processMultipart(HttpServletRequest request) {

            
    if (!"POST".equalsIgnoreCase(request.getMethod())) {
                
    return (request);
            }

            
            String contentType 
    = request.getContentType();
            
    if ((contentType != null&&
                contentType.startsWith(
    "multipart/form-data")) {
                
    return (new MultipartRequestWrapper(request));
            }
     else {
                
    return (request);
            }


        }

    還原:
       在doForward和doInclude中在forward和include之前都執行了下面的代碼:
            if (request instanceof MultipartRequestWrapper) {
                request 
    = ((MultipartRequestWrapper) request).getRequest();
            }


         問題就出現在這兒。在經過測試之后,發現request只能進行一次multipart解析,這或許和解析request的時候調用了request.inputStream有關,第一次調用之后再調用就不能獲取其中的有效內容了。因此發現request在調用CommonsMultipartRequestHandler.handleRequest進行解析后并還原后,調用common-upload對request進行解析已經得不到任何得提交內容了,因此當Form驗證失敗,返回input頁面時,即使再進行multpart解析,也不能通過request.getPrameter取到你想要的數據。而此時,表單中的數據卻不會丟失(定義在ActionForm中的表單域),這是因為struts的html系列tag在redisplay時值都是從ActionForm獲取的。

           在將RequestProcessor.doForward和doInclude中還原request的語句注釋后,問題得到了解決。到目前還不清楚為什么struts要還原request,難道是因為chain的原因?

           webwork中應該不會出現這個問題,因為webwork中無論ServletDispatcher還是FilterDispatcher在對request wrap之后都沒有再還原。
    posted @ 2006-03-15 06:10 dev 閱讀(3933) | 評論 (1)編輯 收藏
     
    tomcat、jdk1.4下出現The output format must have a '{http://xml.apache.org/xalan}content-handler' property!的原因:
        這是因為系統、tomcat或者jdk使用了老版本的xalan.jar。系統如果本身沒有使用,而tomcat/common/lib、tomcat/common/endorsed/lib、tomcat/shared/lib下又沒有xalan.jar的話,那就是jdk使用了老版本的xalan.jar——在jre\lib\rt.jar里面。下載最新的xalan.jar然后放到tomcat/common/endorsed下即可解決這一問題。
    posted @ 2006-03-03 19:46 dev 閱讀(1049) | 評論 (1)編輯 收藏
     
    暫時記下,沒想透徹,思考所得、個人見解以后再加入。

    企業發展的4個階段:
  • 產品階段
  • 資產階段
  • 資本階段
  • 品牌階段

    企業管理的4個階段:
  • 人治,嘴上說
  • 法治,建立制度
  • 企業文化
  • 目標管理,充分發揮員工的積極主動型,自我管理
  •  

    posted @ 2006-02-21 02:13 dev 閱讀(748) | 評論 (0)編輯 收藏
     

          blog很好,blogjava暫時感覺也很好,可是為什么不能寫只允許自己看的日志呢?雖說blog就是為了大家能夠分享彼此的觀點感想,但是總有一些東西是不便公開或者暫時不能公開的。如果允許寫只允許自己看的日志,blog的應用范圍就會更大,價值也會被充分挖掘了。
         也可能是我愚昧,對blog了解還不深吧,上述所說的blog也許已經出現了(自己搞一個得了,笑談)。

    posted @ 2006-02-21 02:02 dev 閱讀(247) | 評論 (0)編輯 收藏
     
  • XP
  • SCRUM
    需要并且應該持續關注、思考。

    一些共同點:
  • 快速迭代
  • 持續改進
  • 注重測試
  • 團隊協作
  • posted @ 2006-02-20 02:10 dev 閱讀(199) | 評論 (0)編輯 收藏
     
           很久沒有來這兒了。其實我很喜歡BLOG,可以記下每天工作中的所思所想。我是一個喜歡思考的人,經常有一些想法,有這么一塊地方,能夠把自己的經驗、想法、創造記錄下來,沉積起來,對自己無疑是一種財富。

          不知道是不是有人會寫項目經理日志,我覺得這是一個很好的事情。以前做項目管理的時候只是弄了一個“項目事件”,記錄項目開發過程中發生的、自己覺得是重要的事情,比如某某人進入項目組、離開項目組了,某某模塊版本發布了,發生了什么大的費用等等。寫項目經理日志,或者開發日志、工作日志也行,把自己在工作中、項目開發過程中、項目管理過程中的零零碎碎的想法記錄下來,會是一件很棒的事情。人不應該懶,再累心情再遭也應該堅持寫這種日志。

          或許小筆記本、那種可以隨身攜帶的那種是一件更好的日志記錄工具,可惜容量不夠,而且不能檢索。掌上電腦?寫起來似乎麻煩了,table-pc,好像又太大了,攜帶不方便,可惜,要是手寫識別技術更智能一點、掌上電腦更薄一點,而且可以展開屏幕就棒了。可惜。

     
    posted @ 2006-02-20 01:19 dev 閱讀(188) | 評論 (0)編輯 收藏
     

      JDK1.5出來很久了,一直沒有研究。這倒不是沒有時間,而是覺得J2EE服務器要支持JDK1.5還需要一段時間,而多數客戶還在使用JDK1.4,因此要基于JDK1.5開發Web應用程序還不現實,因此一直沒有去弄這玩意。

      今天由于研究Desktop的開發,裝了1.5,發現1.5中Java程序已經可以獲得本地系統的外觀,我試著不斷的變換了xp的theme,Java程序始終能夠保持和系統的外觀一致;而且以前使用SkinLF后,在web start程序中JOptionPane的窗體經常出不來的問題也解決了。這可是一個非常好的消息。

      另一個好消息是JDK的下一個版本將對Swing/AWT組件進行增強。

      為Java感到高興!

    posted @ 2005-05-17 22:12 dev 閱讀(539) | 評論 (0)編輯 收藏
     

    這里列出一部分Java Desktop的開發資源。

    1。A java.net community for JavaDeskTop

      這是sun主持的資源很全的社區,有很多關于JavaDeskTop開發的資源。

    2。JDIC(Java Desktop Integration Components)

      Sun主持的致力于java和本地應用程序集成、交互的組件集,非常棒。目前有5大組件。

      Desktop

      FileTypes

      Brower

      System Tray Icon

      Packager

    3。JDNC(Java Desktop Network Component)

    4。JExePack

      一個將Java程序轉化為Exe程序的組件。

    5。JSmooth

      作用同JExePack。

    6。JavaService

      一個將Java程序轉化為NT Service的組件。

    7。SKinLF

      非常棒的Java LookAndFeel實現,采用配置包的形式定義Java的LookAndFeel,可以很方便的定義自己的LookAndFeel。它的網站上提供了大量Skin下載,其中不乏精品。

    8。JGoodies

      JGoodies最出名的是它的FormLayout,它使swing和AWT應用程序的布局變得非常簡單。由于它的影響,已經有專門針對它的DESIGNER出現,Eclipse也有相應的插件支持。FormLayout使Java的幾個默認Layout相形見絀。

      JGoodies還有一組Swing/Awt組件,可以很方便的創建Wizard、對話框、Splash窗體、About窗體等GUI部件。

    9。Rachel(Open Source Resource Loading Toolkit for Java Web Start )

      和WebStart打過交道的人可能知道,要在webstart中讀取解析zip或者jar資源是一件非常困難的事,然而有些資源又必須以zip或者jar的形式存在,比如SKinLF就是這樣。Rachel使你不再為這種事情煩惱。它提供兩種解決方案:采用class://的協議裝載URL資源,內嵌一個小型的多線程http server。

    10。JavaHelper(JavaHelp System)

      Sun提供的制作Java Help制作系統。允許你在GUI應用程序、Applet中提供Online Help功能。

    11。Exe4j

      Java 安裝程序制作工具。

    12。JGraph

      非常出名的Java 圖形編輯框架。

    13。GEF(Graphic Edit Framework)

      非常好的圖形編輯框架,雖然沒有JGraph出名,但是我始終覺得它的結構和API都比JGraph好,擴展性非常好。

    14。yworks

      它的YGuard是一個非常棒的混淆器,免費的,功能很強。除了YGuard它還有幾個非常好的組件。

    15。Create GUI with JFC/Swing

      Sun的JFC/Swing編程初學者指南。

    16。Drag and Drop

      Sun的關于在GUI中實現拖放操作的教學文章。

    17。Joshua Marinacci的Blog

      有很多介紹GUI編程的好文章。

    18。CloseAndMaxTabbedPane An enhanced JTabbedPane

      JavaWorld上一篇關于如何在JTabbedPane的Tab上添加Close按鈕、Maximize 按鈕和PopupMenu的文章,有源代碼下載。還可以。

    19。Creating Wizard Dialogs with Java Swing

      Sun上的介紹用Swing創建類似Elipse Wizard對話框的文章。

    posted @ 2005-05-17 22:11 dev 閱讀(1412) | 評論 (0)編輯 收藏
     

      SkinLF(http://www.l2fprod.com/)是一個非常漂亮的Java LookAndFee組件,它的外觀可以配置,由一組小圖片和一個skinlf-themepack.xml構成。SkinLF的網站上提供了很多Skin下載,這里http://www.l2fprod.com/software/skinlf/jnlp/demo.jnlp可以看到SkinLF和這些外觀的演示。可惜的是除了默認的themepack.zip之外,其他外觀(好像有很少幾個除外)都有中文亂碼的問題。其實這是這些外觀使用的字體導致的。

      打開外觀zip文件中的skinlf-themepack.xml,你會發現其他外觀的配置文件比themepack.zip中的配置文件多了一些地方:

      <font name="Global" value="SansSerif,0,11" />
      <font name="InternalFrame.titleFont" value="Trebuchet MS,1,11" />
      <font name="TabbedPane.font" value="Tahoma,0,11" />
      <font name="MenuBar.font" value="Tahoma,0,11" />
      <font name="MenuItem.font" value="Tahoma,0,11" />
      <font name="PopupMenu.font" value="Tahoma,0,11" />
      <font name="Menu.font" value="Tahoma,0,11" />
     把這些注釋掉,然后把配置文件放回到zip文件中就可以了。當然你還可以嘗試采用其他的字體。
     
     采用JGoodies的LookAndFeel出現亂碼,我曾經以為是UTF-8的問題,現在看來可能也是字體導致的。可惜的是,JGoodies的LookAndFeel不能配置。
    posted @ 2005-05-17 22:11 dev 閱讀(869) | 評論 (0)編輯 收藏
     

      下午,試用了SkinLF(http://www.l2fprod.com),感覺非常好,程序的外觀得到了很大的改善,還可以根據自己的需要隨意調整得到自己想要的外觀,但是要將SkinLF應用到Web Start中還有點問題。這是因為,web start使用到的資源必須包裝成jar文件,以的形式定義到jnlp資源文件中,而SkinLF的外觀配置文件是zip形式的。也許有人會說,把zip轉化成jar文件就可以了。是的,想象中這應當是可以的,可是實際情況不是如此,你會發現使用ClassLoader.getResourceStream("themepack.jar")的時候返回了Null,SkinLookAndFeel.loadLookAndFeel()會異常Stream closed.

      調試之后發現,即使是在客戶端,在Eclipse中運行的時候,如果不把themepack.jar定義到ClassPath中,也是無法加載的。

      我想這是一個普遍的問題,根據我的理解,如果其他資源,比如圖片、xml文件、屬性文件等等能夠被加載,themepack.jar也應該被加載。事實上應該是這樣,但是關鍵在于SkinLF需要采用ZipInputStream解析zip(jar)文件,這時情況就不一樣了。具體的原因目前沒有搞清楚。

      在網上找了半天,終于發現一個Open Source的組件:Rachel,使用它很輕易就可以解決上面提到的問題。

      Rachelhttp://rachel.sourceforge.net)是一個為解決Web start裝載資源困難而開發的組件。它提供了兩種方法解決資源裝載問題。

         方法一,使用class://URL Handler。
          這個方法采用新的URL協議:class://從jar文件中獲取資源。

         Step 1,注冊新的URL Handler,以支持class://協議(protocal)。
         例子:java.net.URL.setURLStreamHandlerFactory( new RachelUrlFactory() );

         Step 2,采用class://協議構造URL,從jar文件中讀取資源。
      語法:class:///
      例子:

    class://test.LookAndFeelTest/themepack.zip
    class://com.l2fprod.gui.plaf.skin.SkinLookAndFeel/themepack.zip


      注意:這里,是Rachel用來定義資源文件所在的jar的,后面的相對于jar中的根目錄而言。上述例子中的jar的結構如下:

          test.jar:

          test
    /LookAndFeelTest.class
          com
    /l2fprod/gui/plaf/skin/SkinLookAndFeel.class
          themepack.zip
          images
    /example.png
          html
    /index.htm

      Step 3,采用java.net.URL獲取資源。
          例子:

        URL url = new URL("class://test.LookAndFeelTest/themepack.zip");
        URL url 
    = new URL("class://test.LookAndFeelTest/html/index.html");
        URL url 
    = new URL("class://test.LookAndFeelTest/images/example.png");

        URL url 
    = new URL("class://com.l2fprod.gui.plaf.skin.SkinLookAndFeel/themepack.zip");
        SkinLookAndFeel.setSkin( SkinLookAndFeel.loadThemePack(url) );

      方法二,在程序中嵌入多線程的,小型的http server。

      Step 1,把你的資源放到jar中。

      Step 2,在每一個jar中增加一個anchor class,幫組server定位資源所在的jar文件,這點類似于方法一class:///的的
      例子:

       public class CrossRefAnchor
       {
         
    public CrossRefAnchor() {}
       }

      CrossRefAnchor沒有任何的實際意義,只是為了幫組定義資源所在的jar。

      Step 3,為每一個包含資源的jar用ClassResourceLoader注冊到WebResourceManager。
      例子:

       WebResourceManager roots = WebResourceManager.getInstance();
       roots.addResourceLoader( 
    new ClassResourceLoader( CrossRefAnchor.class ) );
       roots.addResourceLoader( 
    new ClassResourceLoader( JavaDocAnchor.class ) );

      Step 4,啟動Server。
      例子:

       try
       {
         WebServer http 
    = new WebServer( 7272, roots );
         http.start();
       }
       
    catch( IOException e )
       {
         e.printStackTrace();
       }

      Step 5,采用URL從server獲取資源。
      例子:

       URL crossRefUrl = new URL( "http://localhost:7272/crossref/index.html" );
       URL url 
    = new URL( "http://localhost:7272/test.LookAndFeelTest/themepack.zip" );
       URL url 
    = new URL( "http://localhost:7272/test.LookAndFeelTest/html/index.html" );
       URL url 
    = new URL( "http://localhost:7272/test.LookAndFeelTest/images/example.png" );
    posted @ 2005-05-17 22:11 dev 閱讀(1097) | 評論 (4)編輯 收藏
    僅列出標題
    共3頁: 1 2 3 下一頁 
     
    主站蜘蛛池模板: 免费人成大片在线观看播放电影| 亚洲成aⅴ人片在线影院八| 狼色精品人妻在线视频免费| 国产精品美女自在线观看免费| 亚洲人成网男女大片在线播放 | 亚洲AV男人的天堂在线观看| 国产一卡2卡3卡4卡无卡免费视频| 久久精品国产亚洲av麻豆色欲| 2021国内精品久久久久精免费| 亚洲综合图片小说区热久久| 亚洲精品在线免费观看| 日本亚洲免费无线码| 日韩a级毛片免费观看| 免费一级毛片在线播放视频免费观看永久| 五月婷婷亚洲综合| 亚洲免费视频一区二区三区| 亚洲va久久久噜噜噜久久天堂| 午夜精品免费在线观看| 久久精品国产99国产精品亚洲| 性xxxx视频播放免费| 黄色三级三级三级免费看| 国产亚洲精品成人a v小说| 久久国产乱子伦精品免费一| 亚洲美女视频一区| 日韩一级免费视频| caoporm碰最新免费公开视频| 午夜影视日本亚洲欧洲精品一区 | 男女男精品网站免费观看| 日韩一卡2卡3卡4卡新区亚洲| 最近免费中文字幕大全免费| 亚洲自偷自偷在线成人网站传媒| 国产精品免费视频一区| fc2成年免费共享视频18| 亚洲精品在线免费观看视频| 日韩伦理片电影在线免费观看| aa毛片免费全部播放完整| 亚洲一区二区免费视频| 亚洲成a人片在线观看日本麻豆 | 亚洲尹人九九大色香蕉网站| 国产禁女女网站免费看| 野花香在线视频免费观看大全|