java技術研究

          統計

          留言簿(3)

          閱讀排行榜

          評論排行榜

          #

          網頁的緩存

          網頁緩存
          2009-07-09 10:42

          網頁的緩存是由HTTP消息頭中的“Cache-control”來控制的,常見的取值有private、no-cache、max-age、must-revalidate等,默認為private。其作用根據不同的重新瀏覽方式分為以下幾種情況:
          (1) 打開新窗口
          如果指定cache-control的值為private、no-cache、must-revalidate,那么打開新窗口訪問時都會重新訪問服務器。而如果指定了max-age值,那么在此值內的時間里就不會重新訪問服務器,例如:
          Cache-control: max-age=5
          表示當訪問此網頁后的5秒內再次訪問不會去服務器
          (2) 在地址欄回車
          如果值為private或must-revalidate(和網上說的不一樣),則只有第一次訪問時會訪問服務器,以后就不再訪問。如果值為no-cache,那么每次都會訪問。如果值為max-age,則在過期之前不會重復訪問。
          (3) 按后退按扭
          如果值為private、must-revalidate、max-age,則不會重訪問,而如果為no-cache,則每次都重復訪問
          (4) 按刷新按扭
          無論為何值,都會重復訪問


          項目中使用過濾器來設置網頁的緩存
          FilterConfig fc;

              public void doFilter(ServletRequest req, ServletResponse res,
                      FilterChain chain) throws IOException, ServletException {
                  HttpServletResponse response = (HttpServletResponse) res;
                  // set the provided HTTP response parameters
                  for (Enumeration e = fc.getInitParameterNames(); e.hasMoreElements();) {
                      String headerName = (String) e.nextElement();
                      response.addHeader(headerName, fc.getInitParameter(headerName));
                  }
                  // pass the request/response on
                  chain.doFilter(req, response);
              }

          配置文件的配置:
          <filter>
                  <filter-name>NoCache</filter-name>
                  <filter-class>filter.CacheFilter</filter-class>
                  <init-param>
                      <param-name>Cache-Control</param-name>
                      <param-value>no-cache, must-revalidate</param-value>
                  </init-param>
              </filter>
              <filter>
                  <filter-name>CacheForWeek</filter-name>
                  <filter-class>filter.CacheFilter</filter-class>
                  <init-param>
                      <param-name>Cache-Control</param-name>
                      <param-value>max-age=604800</param-value>
                  </init-param>
              </filter>

              <filter-mapping>
                  <filter-name>CacheForWeek</filter-name>
                  <url-pattern>*.js</url-pattern>
              </filter-mapping>
              <filter-mapping>
                  <filter-name>CacheForWeek</filter-name>
                  <url-pattern>*.css</url-pattern>
              </filter-mapping> 
              <filter-mapping>
                  <filter-name>CacheForWeek</filter-name>
                  <url-pattern>*.gif</url-pattern>
              </filter-mapping>

          posted @ 2012-04-10 17:54 小秦 閱讀(214) | 評論 (0)編輯 收藏

          jquery AJAX 當參數包含特殊字符如&*#等的時候

          JQuery AJAX中遇到這樣一個問題,參數中包含特殊字符,比如&'#@等
          這是執行AJAX的時候就會出問題,因為所傳的參數變了.
          看個示例就明白:
                        $.ajax({
                              url: '/ashx/ajax.ashx',
                              type: 'post',
                              data: 'option=delete&name=11&adb,
                              success: function (data) {
                                  if (data != 'error') {
                                    
                                      }
                                  }
                         });
          上面執行的ajax就是異步刪除一個name為 11&abd 的數據
          當請求到ajax.ashx頁面時,我們獲取到的name參數為11
          執行操作后會發現其實刪除了 name 為 11的數據,而沒有刪除 name 為 11&abc 的數據
          這是由于有&特殊字符,把以前的倆個參數變成了三個參數 option,name,abc
          這時就需要用另外一種方法傳遞參數:
                        $.ajax({
                              url: '/ashx/ajax.ashx',
                              type: 'post',
                              data:{ 'option':'delete','name':'11&adb'},
                              success: function (data) {
                                  if (data != 'error') {
                                    
                                      }
                                  }
                         });
          采用上面的json格式傳遞參數就可以避免特殊字符引起的參數錯誤問題.

          posted @ 2012-03-26 14:50 小秦 閱讀(1209) | 評論 (1)編輯 收藏

          ant快速部署web項目

           1、安裝ant,下載ant包,并解壓到d盤根目錄d:\ant
          2、配置環境變量,包括ANT和JAVA_HOME
          ANT_HOME:D:\ant
          JAVA_HOME:E:\workserver\jdk1.5.0_06
          path:D:\ant\bin;E:\workserver\jdk1.5.0_06\bin
          3、ant需要jsch-0.1.37.jar包和js-1.6R2.jar包放在ant\lib目錄下
          4、啟動命令行cmd,到該目錄:E:\workspace\ebizcenter\metadata\build\scripts
          5、執行a、"ant checkout"從svn服務器下載,b、"ant build"編譯java類成class文件,c、"ant deploy"部署到服務器(上傳) 
          6、如果是64位系統,參考這篇文章http://www.linuxso.com/linuxbiancheng/13326.html
          a、去http://www.sliksvn.com/en/download下載并安裝
          b、安裝完成后,把安裝目錄(如:D:\Program Files\SlikSvn\bin)  加入到系統環境變量PATH中 
          c、在安裝目錄下(如:D:\Program Files\SlikSvn\bin)找到“libsvnjavahl-1.dll”這個文件,復制一份后重命名為“svnjavahl-1.dll”,即去掉文件名中前三個字母 

          posted @ 2012-02-28 14:32 小秦 閱讀(512) | 評論 (0)編輯 收藏

          亂碼

          1、url轉發需要修改響應的字符類型
          response.setContentType("text/html;charset=UTF-8");
          2、@import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 

          posted @ 2012-02-25 14:14 小秦 閱讀(205) | 評論 (0)編輯 收藏

          java類似ajax文件上傳

           ajax 是無法實現上傳文件的 , ajax與后臺通信都是通過傳遞字符串

           

           

          -- index.html

           

          Html代碼  收藏代碼
          1. <form action="upload.jsp" id="form1" name="form1" encType="multipart/form-data" method="post" target="hidden_frame" >  
          2.     <input type="file" id="file" name="file" style="width:450">  
          3.     <input type="submit" value="上傳文件"><span id="msg"></span>  
          4.     <br>  
          5.     <font color="red">支持JPG,JPEG,GIF,BMP,SWF,RMVB,RM,AVI文件的上傳</font>  
          6.       
          7.     <iframe name='hidden_frame' id="hidden_frame" style='display:none'></iframe>  
          8. </form>  
          9.   
          10. <!-- javascript s -->  
          11. <script type="text/javascript">    
          12.     function callback(msg) {    
          13.         document.getElementById("file").outerHTML = document.getElementById("file").outerHTML;  
          14.         document.getElementById("msg").innerHTML = "<font color=red>"+msg+"</font>";  
          15.     }  
          16. </script>  

           

           

          index.html 中主要要做的就是寫一個 form 和 iframe ,并把 form 的 target 設為 iframe 的名字,注意要把iframe 設為不可見,其他的都是正常的文件上傳的寫法,這樣刷新的頁面就是這個隱藏的 Iframe ,而在 index.html 中是不會有頁面刷新的,js的 callback 方法是回調方法。用于清空文件上傳框和顯示后臺信息,注意清空文件上傳框的方法,和普通方法有點不一樣。


          上傳的注意事項:
          1、<form method="POST" id="matchItemForm" name="formEntity" action="${CoreCtxPath}/gather/gatherAjax.html" enctype="multipart/form-data" target="hidden_frame">
          這里的method很重要不能少,enctype也不能少,target代表form和iframe綁定也不能少。

          posted @ 2012-02-25 14:13 小秦 閱讀(4099) | 評論 (2)編輯 收藏

          讓Myeclipse格式化更漂亮(轉自javaeye)

          1.Java代碼

          打開Eclipse的Window菜單,然后Preferences->Java->Code Style->Formatter->Edit/Show(根據不同版本可用的按鈕會不一樣) ->Line Wrapping->Maximum line width:由默認的80改成自己想要設定的長度
           
          2.Html代碼
          Window->Preferences->MyEclipse->Files and Editors->Html->Html Source->Line width->加個0以后保存。
           
          3.xml代碼
          Window->Preferences->MyEclipse->Files and Editors->xml->xml Source->->Line width->999
          @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://www.aygfsteel.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

           

          posted @ 2011-10-21 10:14 小秦 閱讀(5457) | 評論 (0)編輯 收藏

          MySQL遠程訪問

                 為了能夠讓終端通過網絡訪問,需要開啟MYSQL遠程訪問服務。即在MYSQL的user表中進行設置,使任何ip的主機都能夠使用用戶名為root,密碼為“1”訪問數據庫。在Linux的終端中輸入如下命令:

          #mysql –uroot -p

          Enter password:

          #mysql>use mysql;

          #mysql>update user set host='%' where user='root';

          #mysql>FLUSH PRIVILEGES;

          #mysql>select host,user from user ;

          當看到Host 這一項中有一個%記錄且用戶名為root。說明設置已成功。


          一般MySQL安裝的時候默認是綁定了本機。因此需要在配置文件中取消本機綁定。方能夠被遠程的主機訪問。MySQL配置文件為my.cnf ,位于/etc/mysql/文件夾下。編輯my.cnf,找到bind-address =127.0.0.1。這一句就是將MySQL與本機綁定。所以將此句注釋掉。取消與本機的綁定。然后執行 #sudo /etc/init.d/mysql restart 。即重啟MySQL服務,重啟之后就可進行遠程訪問。這樣就完全搭建好可以在網絡中被終端訪問的服務器端數據庫了。

          posted @ 2009-07-24 14:32 小秦 閱讀(753) | 評論 (1)編輯 收藏

          如何讓struts2和spring2在jdk1.4上跑起來

          1、struts2提供的有struts-2.0.9\j4目錄,這個下面有工具可以把1.5下編譯的包,給編譯成兼容1.4的包。
          2、spring2是直接支持jre1.4的,其實大部分開源jar包都直接支持。
          3、如果你用的是eclipse,你需要在項目--->屬性--->構建路徑---->庫,中進行設置“JRE 系統庫[jdk 1.4.2_07]”,當然你也要引入其它編譯好了的兼容1.4的包。
          4、在項目--->屬性--->java編譯器,中需要勾選“啟用特定與項目的設置”,將“編譯器一致性級別”設置為1.4,并且應用。
          5、有些jar包不能在1.4環境下跑的,不過這個不好統計,我遇到的有commons-beanutils-1.6.jar不要用1.7以及以后版本的,貌似commons-logging-1.0.4.jar也不要用高版本。
          這個是沒有設置好的時候報出的錯誤信息(這里是c3p0,也可能不是這個類報出來):
          (C3P0Registry.java:139) jdk1.5 management interfaces unavailable... JMX support disabled.

          posted @ 2009-05-13 15:11 小秦 閱讀(1251) | 評論 (0)編輯 收藏

          緩存實現實現手段(轉自javaeye)

          緩存實現的層面有很多:

          1、對象緩存
          由ORM框架提供,透明性訪問,細顆粒度緩存數據庫查詢結果,無需業務代碼顯式編程。當軟件結構按照ORM框架的要求進行針對性設計,使用對象緩存將會極大降低web系統對于數據庫的訪問請求。因為類似Hibernate這樣的ORM,良好的設計數據庫結構和利用對象緩存,在大負載網站,能夠提供極高的性能。因為使用對象緩存也無需顯式編程,所以適用范圍也最廣泛。

          2、查詢緩存
          對數據庫查詢結果行集進行緩存,適用于一些耗時,但是時效性要求比較低的場景。iBATIS就只能使用查詢緩存,而無對象緩存。查詢緩存和對象緩存適用的場景不一樣,是互為補充的。

          3、片斷緩存
          針對動態頁面的局部片斷內容進行緩存,適用于一些個性化但不經常更新的頁面(例如博客)。OSCache提供了相當簡陋的片斷緩存,而RoR則提供了相當好的片斷緩存機制。

          4、Action緩存
          針對URL訪問返回的頁面結果進行緩存,適用于粗粒度的頁面緩存,例如新聞發布。OScache提供了相當簡陋的Action緩存(通過web.xml中的配置),而RoR提供了相當好的Action緩存。

          緩存不能一概而論,以上每種緩存分別適用于各自的場景,緩存不同的層面。當然你可以在應用程序當中把4種緩存一起用上。

          posted @ 2007-11-13 14:46 小秦 閱讀(369) | 評論 (0)編輯 收藏

          Java路徑問題最終解決方案之一(出自:http://dev.yesky.com/85/3001085_1.shtml)

          相對路徑本質上還是絕對路徑

            因此,歸根結底,Java本質上只能使用絕對路徑來尋找資源。所有的相對路徑尋找資源的方法,都不過是一些便利方法。不過是API在底層幫助我們構建了絕對路徑,從而找到資源的!

            得到classpath和當前類的絕對路徑的一些方法

            下面是一些得到classpath和當前類的絕對路徑的一些方法。你可能需要使用其中的一些方法來得到你需要的資源的絕對路徑。

            1.FileTest.class.getResource("")

            得到的是當前類FileTest.class文件的URI目錄。不包括自己!

            如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

            2.FileTest.class.getResource("/")

            得到的是當前的classpath的絕對URI路徑。

            如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

            3.Thread.currentThread().getContextClassLoader().getResource("")

            得到的也是當前ClassPath的絕對URI路徑。

            如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

            4.FileTest.class.getClassLoader().getResource("")

            得到的也是當前ClassPath的絕對URI路徑。

            如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

            5.ClassLoader.getSystemResource("")

            得到的也是當前ClassPath的絕對URI路徑。

            如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

            我推薦使用Thread.currentThread().getContextClassLoader().getResource("")來得到當前的classpath的絕對路徑的URI表示法。

            Web應用程序中資源的尋址

            上文中說過,當前用戶目錄,即相對于System.getProperty("user.dir")返回的路徑。

            對于JavaEE服務器,這可能是服務器的某個路徑,這個并沒有統一的規范!

            而不是我們發布的Web應用程序的根目錄!

            這樣,在Web應用程序中,我們絕對不能使用相對于當前用戶目錄的相對路徑。

            在Web應用程序中,我們一般通過ServletContext.getRealPath("/")方法得到Web應用程序的根目錄的絕對路徑。

            這樣,我們只需要提供相對于Web應用程序根目錄的路徑,就可以構建出定位資源的絕對路徑。

            這是我們開發Web應用程序時一般所采取的策略。

                                                        (本文轉載自:http://dev.yesky.com/85/3001085_1.shtml)

          posted @ 2007-06-06 11:02 小秦 閱讀(375) | 評論 (0)編輯 收藏

          僅列出標題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
          主站蜘蛛池模板: 双江| 宁晋县| 马山县| 广河县| 仪征市| 隆林| 石门县| 洱源县| 府谷县| 巨鹿县| 西盟| 鲜城| 建德市| 吉安市| 金门县| 永康市| 灵石县| 正蓝旗| 彩票| 盐源县| 砀山县| 西乌| 平山县| 潞西市| 东乡县| 托里县| 仪陇县| 石首市| 长治县| 黎平县| 科技| 团风县| 石泉县| 游戏| 洮南市| 义乌市| 漳浦县| 高安市| 荣成市| 濮阳市| 随州市|