Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android webview 項目服務端gzip實現

Android webview 項目服務端gzip實現

編輯:高級開發

之前在網上看到android webvIEw是否支持gzip的討論。

  大家一致認為是不支持的,以下是自己摸索出來的實現

  方案一:

  自己實現的思路發事:

  1.客戶端

  就自己實現webviewclIEnt,並控制連接,發送請求頭accept-encoding,告知服務器,當前浏覽器支持gzip解析。讀取遠程內容後,再通過gzipinputstream進行解碼,然後使用webvIEw的loaddata方法加載內容。

  2.服務端

  用的tomcat服務器,配置網上有介紹

  主要是修改server.XML添加壓縮支持

  注:發現的問題是,通過修改server.XML配置支持gzip壓縮,需要顯式設置請求頭,webvIEw默認是不會發送這樣的請求頭的(或者是發送的不一樣),導致需要有第一步的操作。

  這種實現,自己控制連接,請求數據並解析的方案,太過於麻煩。頁面上的請求地址處理(絕對路徑、相對路徑的問題)、亂碼、問題等等。最要命的是修改 tomcat的server.XML只能解決Html、CSS、JS、XML文件的壓縮。對於JSP文件無可奈何,想想一個Javaee web應用中JSP頁面還是相當多的,所以上述方案真的很雞肋。

  方案二

  1.在服務端(web應用)中強制設置采用gzip壓縮格式,寫回應頭中的Content-Encoding,由於webvIEw進行解壓縮

  經測試,webvIEw是支持Content-Encoding,gzip回應頭信息的。

  也就是說只要服務端回應的是gzip的數據,webvIEw還是可以還原,並顯示。

  接下來的就簡單了,通過寫一個過濾器,攔截JSP解析時的輸出,在解析完成後,使用gzipoutputstream進行編碼並輸出。並設置回應頭的Content-Encoding信息就行了。

  已經提供該過濾器,見附件:

  使用辦法(修改web.XML,添加如下內容)

  Java代碼

  1. < filter>

  2. < filter-name>gzipfilter< /filter-name>

  3. < filter-class>

  4. com.XXXXXXXXXXXXXXXX.webserver.filter.GzipFilter

  5. < /filter-class>

  6. < /filter>

  7. < filter-mapping>

  8. < filter-name>gzipfilter< /filter-name>

  9. < url-pattern>*.htm< /url-pattern>

  10. < /filter-mapping>

  接上頁

  11. < filter-mapping>

  12. < filter-name>gzipfilter< /filter-name>

  13. < url-pattern>*.Html< /url-pattern>

  14. < /filter-mapping>

  15. < filter-mapping>

  16. < filter-name>gzipfilter< /filter-name>

  17. < url-pattern>*.JSP< /url-pattern>

  18. < /filter-mapping>

  < filter>

  < filter-name>gzipfilter< /filter-name>

  < filter-class>

  com.XXXXXXXXXXXXXXXX.webserver.filter.GzipFilter

  < /filter-class>

  < /filter>

  < filter-mapping>

  < filter-name>gzipfilter< /filter-name>

  < url-pattern>*.htm< /url-pattern>

  < /filter-mapping>

  < filter-mapping>

  < filter-name>gzipfilter< /filter-name>

  < url-pattern>*.Html< /url-pattern>

  < /filter-mapping>

  < filter-mapping>

  < filter-name>gzipfilter< /filter-name>

  < url-pattern>*.JSP< /url-pattern>

  < /filter-mapping>

下載源碼

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved