`
zhanghan
  • 浏览: 192587 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

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,添加如下内容)

<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 楼 jinhongda 2016-02-18  
   

相关推荐

    Android WebView与服务端交互Demo

    使用WebView可以让Android端的开发工作大量减少,原因是在服务端可以为其做一定的工作,下面这个小Demo就实现了从Android客户端与服务端的交互。我这里客户端使用的工具是Eclipse,服务端使用MyEclipse。

    Android WebView与JavaScript交互实现Web App

    接下来,我们讨论如何实现WebView与JavaScript的交互。Android提供了两种主要的方法:`addJavascriptInterface()`和`evaluateJavascript()`。 1. **addJavascriptInterface()**: 这个方法可以将Android对象暴露给...

    IOS WebView与JavaScript交互实现Web App

    而在Objective-C中,我们需要实现`UIWebViewDelegate`的`webView:didReceiveScriptMessage:`方法来接收这些消息: ```objective-c - (void)webView:(UIWebView *)webView didReceiveScriptMessage:(WKScriptMessage...

    webview的简单实现

    Webview是Android系统中一个非常重要的组件,它允许开发者在应用程序内部嵌入一个网页浏览器,让用户可以在不离开应用的情况下...在实际开发中,根据项目需求灵活运用和扩展WebView,可以构建出功能强大的混合型应用。

    WinForm下WebView2实现JS与C#交互Demo

    安装完成后,在WinForm项目中引入`Microsoft.WebView2.WinForms`命名空间,这样就可以使用WebView2控件。 接着,在WinForm设计器中添加一个WebView2控件到窗体上,并在代码中初始化它。初始化通常包括设置初始URL、...

    Android WebView HTML界面开发 实现拨打电话

    在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现与HTML、CSS和JavaScript的交互。这篇博客主要讲解如何使用Android WebView来加载HTML界面,并实现点击HTML中的链接...

    WebView 自定义长按选择,实现收藏 / 分享选中文本

    本文将深入探讨如何在WebView中实现自定义长按选择,以及选中文本的收藏和分享功能。 首先,我们需要了解WebView的基本用法。WebView继承自View类,它可以加载HTML、CSS、JavaScript等Web内容。通过调用`loadUrl()`...

    Android项目源码webView套用html页面实现家具销售商城.zip

    在这个“Android项目源码webView套用html页面实现家具销售商城”项目中,开发者正是通过这种技术构建了一个简易的在线家具销售商城。 1. **WebView组件**:WebView是Android SDK中的一个关键组件,它允许在应用程序...

    Android-AndroidWebView加载PDF文件实现

    Android WebView 加载 PDF 文件实现。其原理就是在 app 本地搭建一个 website ,然后利用 WebView 加载这个站点,站点去实现加载显示 PDF 的目的,站点其原理也是采用 js 框架去实现的。

    在android的webview中实现websocket通信

    "AndroidWebView中实现WebSocket通信" 在 Android 的 WebView 中实现 WebSocket 通信是当前移动端应用开发中的一个热门话题。WebSocket 是 HTML5 规范中的一项技术,可以实现客户端与服务器之间的实时双向通信。在...

    Android项目源码webView套用html页面实现家具销售商城

    本项目源码使用了WebView组件来加载HTML页面,从而实现商城的功能。WebView是Android SDK提供的一种强大的工具,它允许开发者在应用程序中嵌入网页内容,使得在原生应用中展现丰富的Web界面成为可能。 1. **WebView...

    调用Android WebView 的例子(实现浏览器功能)

    以下是一个关于如何调用Android WebView来实现浏览器功能的详细教程。 首先,我们需要在AndroidManifest.xml文件中为WebView应用必要的权限,主要是Internet权限,这样才能访问网络资源: ```xml ``` 接下来,...

    Android中Webview与原生界面交互及二维码扫描功能实现

    本项目"Android中Webview与原生界面交互及二维码扫描功能实现"就是一个很好的示例,展示了如何在Android应用中集成WebView并结合二维码扫描功能。 首先,我们要理解WebView的基本用法。WebView是Android SDK中的一...

    Android4.4 WebView使用实例,实现后退前进刷新错误处理等功能

    Android 4.4 WebView使用实例,实现后退、前进、刷新、错误处理等功能。完成项目,可直接eclipse运行。有WebViewClient常用方法注释,WebChromeClient常用方法注释。

    用webview实现的android简单浏览器

    在Android平台上,WebView是一个强大的组件,它允许开发者在应用程序中嵌入网页内容,甚至实现一个简单的浏览器应用...通过这个项目,你可以了解Android开发中的WebView使用、数据库操作以及用户交互设计等关键知识点。

    android的webView的登录实例

    在项目的`activity_main.xml`布局文件中,添加一个WebView组件。使用以下XML代码: ```xml &lt;WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" ...

    Android中WebView的具体实现

    在Android开发中,WebView是一个非常...在实际项目中,根据需求,可能还需要处理更多复杂情况,如处理重定向、实现网页与原生代码的交互、优化性能等。了解并熟练掌握这些知识点,将使你在开发混合式应用时游刃有余。

    android webview 加载本地html 实现 与 java 之间的相互响应

    本篇文章将详细探讨如何使用Android的WebView加载本地HTML,并实现Java代码与HTML内容之间的交互。 一、WebView基本使用 1. 添加依赖:在AndroidManifest.xml文件中,确保WebView的权限已经开启,如`...

    android 通过生成的pdf文件发送服务端调用打印 ,打印预览用WebView显示本地Html

    在安卓平台上,实现通过生成PDF文件并将其发送到服务端进行打印,以及使用WebView来预览本地HTML,是一项常见的需求。这个过程涉及到多个技术环节,包括PDF生成、网络通信、HTML渲染以及打印服务的调用。以下是这些...

Global site tag (gtag.js) - Google Analytics