java技術(shù)研究

          統(tǒng)計(jì)

          留言簿(3)

          閱讀排行榜

          評(píng)論排行榜

          #

          網(wǎng)頁的緩存

          網(wǎng)頁緩存
          2009-07-09 10:42

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


          項(xiàng)目中使用過濾器來設(shè)置網(wǎng)頁的緩存
          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 小秦 閱讀(216) | 評(píng)論 (0)編輯 收藏

          jquery AJAX 當(dāng)參數(shù)包含特殊字符如&*#等的時(shí)候

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

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

          ant快速部署web項(xiàng)目

           1、安裝ant,下載ant包,并解壓到d盤根目錄d:\ant
          2、配置環(huán)境變量,包括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、啟動(dòng)命令行cmd,到該目錄:E:\workspace\ebizcenter\metadata\build\scripts
          5、執(zhí)行a、"ant checkout"從svn服務(wù)器下載,b、"ant build"編譯java類成class文件,c、"ant deploy"部署到服務(wù)器(上傳) 
          6、如果是64位系統(tǒng),參考這篇文章http://www.linuxso.com/linuxbiancheng/13326.html
          a、去http://www.sliksvn.com/en/download下載并安裝
          b、安裝完成后,把安裝目錄(如:D:\Program Files\SlikSvn\bin)  加入到系統(tǒng)環(huán)境變量PATH中 
          c、在安裝目錄下(如:D:\Program Files\SlikSvn\bin)找到“libsvnjavahl-1.dll”這個(gè)文件,復(fù)制一份后重命名為“svnjavahl-1.dll”,即去掉文件名中前三個(gè)字母 

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

          亂碼

          1、url轉(zhuǎn)發(fā)需要修改響應(yīng)的字符類型
          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 小秦 閱讀(209) | 評(píng)論 (0)編輯 收藏

          java類似ajax文件上傳

           ajax 是無法實(shí)現(xiàn)上傳文件的 , ajax與后臺(tái)通信都是通過傳遞字符串

           

           

          -- 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 中主要要做的就是寫一個(gè) form 和 iframe ,并把 form 的 target 設(shè)為 iframe 的名字,注意要把iframe 設(shè)為不可見,其他的都是正常的文件上傳的寫法,這樣刷新的頁面就是這個(gè)隱藏的 Iframe ,而在 index.html 中是不會(huì)有頁面刷新的,js的 callback 方法是回調(diào)方法。用于清空文件上傳框和顯示后臺(tái)信息,注意清空文件上傳框的方法,和普通方法有點(diǎn)不一樣。


          上傳的注意事項(xiàng):
          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 小秦 閱讀(4103) | 評(píng)論 (2)編輯 收藏

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

          1.Java代碼

          打開Eclipse的Window菜單,然后Preferences->Java->Code Style->Formatter->Edit/Show(根據(jù)不同版本可用的按鈕會(huì)不一樣) ->Line Wrapping->Maximum line width:由默認(rèn)的80改成自己想要設(shè)定的長(zhǎng)度
           
          2.Html代碼
          Window->Preferences->MyEclipse->Files and Editors->Html->Html Source->Line width->加個(gè)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 小秦 閱讀(5459) | 評(píng)論 (0)編輯 收藏

          MySQL遠(yuǎn)程訪問

                 為了能夠讓終端通過網(wǎng)絡(luò)訪問,需要開啟MYSQL遠(yuǎn)程訪問服務(wù)。即在MYSQL的user表中進(jìn)行設(shè)置,使任何ip的主機(jī)都能夠使用用戶名為root,密碼為“1”訪問數(shù)據(jù)庫。在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 ;

          當(dāng)看到Host 這一項(xiàng)中有一個(gè)%記錄且用戶名為root。說明設(shè)置已成功。


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

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

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

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

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

          緩存實(shí)現(xiàn)實(shí)現(xiàn)手段(轉(zhuǎn)自javaeye)

          緩存實(shí)現(xiàn)的層面有很多:

          1、對(duì)象緩存
          由ORM框架提供,透明性訪問,細(xì)顆粒度緩存數(shù)據(jù)庫查詢結(jié)果,無需業(yè)務(wù)代碼顯式編程。當(dāng)軟件結(jié)構(gòu)按照ORM框架的要求進(jìn)行針對(duì)性設(shè)計(jì),使用對(duì)象緩存將會(huì)極大降低web系統(tǒng)對(duì)于數(shù)據(jù)庫的訪問請(qǐng)求。因?yàn)轭愃艸ibernate這樣的ORM,良好的設(shè)計(jì)數(shù)據(jù)庫結(jié)構(gòu)和利用對(duì)象緩存,在大負(fù)載網(wǎng)站,能夠提供極高的性能。因?yàn)槭褂脤?duì)象緩存也無需顯式編程,所以適用范圍也最廣泛。

          2、查詢緩存
          對(duì)數(shù)據(jù)庫查詢結(jié)果行集進(jìn)行緩存,適用于一些耗時(shí),但是時(shí)效性要求比較低的場(chǎng)景。iBATIS就只能使用查詢緩存,而無對(duì)象緩存。查詢緩存和對(duì)象緩存適用的場(chǎng)景不一樣,是互為補(bǔ)充的。

          3、片斷緩存
          針對(duì)動(dòng)態(tài)頁面的局部片斷內(nèi)容進(jìn)行緩存,適用于一些個(gè)性化但不經(jīng)常更新的頁面(例如博客)。OSCache提供了相當(dāng)簡(jiǎn)陋的片斷緩存,而RoR則提供了相當(dāng)好的片斷緩存機(jī)制。

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

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

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

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

          相對(duì)路徑本質(zhì)上還是絕對(duì)路徑

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

            得到classpath和當(dāng)前類的絕對(duì)路徑的一些方法

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

            1.FileTest.class.getResource("")

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

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

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

            得到的是當(dāng)前的classpath的絕對(duì)URI路徑。

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

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

            得到的也是當(dāng)前ClassPath的絕對(duì)URI路徑。

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

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

            得到的也是當(dāng)前ClassPath的絕對(duì)URI路徑。

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

            5.ClassLoader.getSystemResource("")

            得到的也是當(dāng)前ClassPath的絕對(duì)URI路徑。

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

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

            Web應(yīng)用程序中資源的尋址

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

            對(duì)于JavaEE服務(wù)器,這可能是服務(wù)器的某個(gè)路徑,這個(gè)并沒有統(tǒng)一的規(guī)范!

            而不是我們發(fā)布的Web應(yīng)用程序的根目錄!

            這樣,在Web應(yīng)用程序中,我們絕對(duì)不能使用相對(duì)于當(dāng)前用戶目錄的相對(duì)路徑。

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

            這樣,我們只需要提供相對(duì)于Web應(yīng)用程序根目錄的路徑,就可以構(gòu)建出定位資源的絕對(duì)路徑。

            這是我們開發(fā)Web應(yīng)用程序時(shí)一般所采取的策略。

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

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

          僅列出標(biāo)題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
          主站蜘蛛池模板: 治县。| 西昌市| 司法| 封开县| 明水县| 乌拉特后旗| 上思县| 周口市| 普格县| 潞西市| 伊宁县| 英山县| 托克逊县| 苏州市| 孟州市| 栖霞市| 利川市| 平和县| 鹤山市| 望谟县| 同仁县| 新竹市| 特克斯县| 聂拉木县| 凤庆县| 南平市| 威宁| 木里| 广宁县| 岢岚县| 咸阳市| 锦州市| 湾仔区| 遂宁市| 黑河市| 封丘县| 云南省| 共和县| 淳化县| 永善县| 泾川县|