之前在网上看到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>
分享到:
相关推荐
使用WebView可以让Android端的开发工作大量减少,原因是在服务端可以为其做一定的工作,下面这个小Demo就实现了从Android客户端与服务端的交互。我这里客户端使用的工具是Eclipse,服务端使用MyEclipse。
接下来,我们讨论如何实现WebView与JavaScript的交互。Android提供了两种主要的方法:`addJavascriptInterface()`和`evaluateJavascript()`。 1. **addJavascriptInterface()**: 这个方法可以将Android对象暴露给...
而在Objective-C中,我们需要实现`UIWebViewDelegate`的`webView:didReceiveScriptMessage:`方法来接收这些消息: ```objective-c - (void)webView:(UIWebView *)webView didReceiveScriptMessage:(WKScriptMessage...
Webview是Android系统中一个非常重要的组件,它允许开发者在应用程序内部嵌入一个网页浏览器,让用户可以在不离开应用的情况下...在实际开发中,根据项目需求灵活运用和扩展WebView,可以构建出功能强大的混合型应用。
安装完成后,在WinForm项目中引入`Microsoft.WebView2.WinForms`命名空间,这样就可以使用WebView2控件。 接着,在WinForm设计器中添加一个WebView2控件到窗体上,并在代码中初始化它。初始化通常包括设置初始URL、...
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现与HTML、CSS和JavaScript的交互。这篇博客主要讲解如何使用Android WebView来加载HTML界面,并实现点击HTML中的链接...
本文将深入探讨如何在WebView中实现自定义长按选择,以及选中文本的收藏和分享功能。 首先,我们需要了解WebView的基本用法。WebView继承自View类,它可以加载HTML、CSS、JavaScript等Web内容。通过调用`loadUrl()`...
在这个“Android项目源码webView套用html页面实现家具销售商城”项目中,开发者正是通过这种技术构建了一个简易的在线家具销售商城。 1. **WebView组件**:WebView是Android SDK中的一个关键组件,它允许在应用程序...
Android WebView 加载 PDF 文件实现。其原理就是在 app 本地搭建一个 website ,然后利用 WebView 加载这个站点,站点去实现加载显示 PDF 的目的,站点其原理也是采用 js 框架去实现的。
"AndroidWebView中实现WebSocket通信" 在 Android 的 WebView 中实现 WebSocket 通信是当前移动端应用开发中的一个热门话题。WebSocket 是 HTML5 规范中的一项技术,可以实现客户端与服务器之间的实时双向通信。在...
本项目源码使用了WebView组件来加载HTML页面,从而实现商城的功能。WebView是Android SDK提供的一种强大的工具,它允许开发者在应用程序中嵌入网页内容,使得在原生应用中展现丰富的Web界面成为可能。 1. **WebView...
以下是一个关于如何调用Android WebView来实现浏览器功能的详细教程。 首先,我们需要在AndroidManifest.xml文件中为WebView应用必要的权限,主要是Internet权限,这样才能访问网络资源: ```xml ``` 接下来,...
本项目"Android中Webview与原生界面交互及二维码扫描功能实现"就是一个很好的示例,展示了如何在Android应用中集成WebView并结合二维码扫描功能。 首先,我们要理解WebView的基本用法。WebView是Android SDK中的一...
Android 4.4 WebView使用实例,实现后退、前进、刷新、错误处理等功能。完成项目,可直接eclipse运行。有WebViewClient常用方法注释,WebChromeClient常用方法注释。
在Android平台上,WebView是一个强大的组件,它允许开发者在应用程序中嵌入网页内容,甚至实现一个简单的浏览器应用...通过这个项目,你可以了解Android开发中的WebView使用、数据库操作以及用户交互设计等关键知识点。
在项目的`activity_main.xml`布局文件中,添加一个WebView组件。使用以下XML代码: ```xml <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" ...
在Android开发中,WebView是一个非常...在实际项目中,根据需求,可能还需要处理更多复杂情况,如处理重定向、实现网页与原生代码的交互、优化性能等。了解并熟练掌握这些知识点,将使你在开发混合式应用时游刃有余。
本篇文章将详细探讨如何使用Android的WebView加载本地HTML,并实现Java代码与HTML内容之间的交互。 一、WebView基本使用 1. 添加依赖:在AndroidManifest.xml文件中,确保WebView的权限已经开启,如`...
在安卓平台上,实现通过生成PDF文件并将其发送到服务端进行打印,以及使用WebView来预览本地HTML,是一项常见的需求。这个过程涉及到多个技术环节,包括PDF生成、网络通信、HTML渲染以及打印服务的调用。以下是这些...