Q:當通過HttpClient這個工具包去訪問某個URL時,服務端返回了不是你期望的資訊?
A:很有可能是請求的參數沒有進行編碼過,服務端接受到這些參數時出現亂碼,從而導致返回資訊不正確;要想佈建要求內容的編碼,可以通過如下這行代碼實現:
- postMethod.getParams().setHttpElementCharset(encoding); //getMethod同樣適用
Q:如何保持tracelog參數始終在URL後面,以保證可以被apache日誌記錄便於後續分析統計?
A:有些同學可能會覺得該問題太幼稚了,呵呵,其實不然,在這次tracelog統計中就出現了問題,表面上看tracelog的確已經加上去了,但是在apache訪問日誌裡面就是沒有記錄;後面查了下原因出在GET方式的form提交,出現問題的代碼如下:
- <form id="mysoftform2" action="http://.../mysoft.jspa?tracelog=bbx_wdrj_main" method="get">
- <input type="hidden" name="plugins" value="$!plugins" />
- </form>
原來,get方式的form.submit()執行時,瀏覽器會預設將 ? 後面的參數都忽略掉;所以服務端apache自然也就無法記錄了,正確的代碼實現有以下幾種實現方式:
其一,將所有參數都追加到URL後面,直接用<a>或者是location.href實現;
- <a href="http://.../mysoft.jspa?plugins=xxx&tracelog=bbx_wdrj_main" class="header_link1">我的軟體</a>
其二,將所有參數(包括tracelog)都以hidden的方式存放於form中,並以GET方式submit;
- <form id="mysoftform2" action="http://.../mysoft.jspa" method="get">
- <input type="hidden" name="plugins" value="$!plugins" />
- <input type="hidden" name="tracelog" value="bbx_wdrj_main" />
- </form>
其三,將tracelog追加到URL後面,其他參數以hidden方式存放於form中,並以POST方式submit;
- <form id="mysoftform2" action="http://.../mysoft.jspa?tracelog=bbx_wdrj_main" method="post">
- <input type="hidden" name="plugins" value="$!plugins" />
- </form>
Q:頁面檔案更新後為什麼頁面顯示樣式還是老的,手動重新整理下就好了?
A:這很有可能是用戶端對靜態資源進行了緩衝所致,實現用戶端緩衝有兩種方式,其一是瀏覽器自動的Cache機制,此時請求頁面,靜態資源返回的http狀態代碼為304,意思是瀏覽器向服務端發起了請求,但是服務端經過比較發現檔案並沒有更新,所以返回一個訊息告訴瀏覽器無需下載該靜態資源;其二是服務端(比如apache)對靜態資源設定了強制緩衝,此時瀏覽器就不會再向服務端發起請求了,而對應的http狀態代碼也變成了Cache;由於頁面在調整過程中,一般都是通過修改css樣式檔案實現,但是css檔案的名稱卻不會發生變化,所以用戶端很有可能使用的是老的靜態資源檔案從而導致新的樣式沒有起效!解決該問題的辦法也比較簡單,直接在靜態資源檔案後面添加一個版本號碼即可,比如:
- <link href="http://.../css/index.css?20081014" rel="stylesheet" type="text/css" />