J2EE搭建WAP站点时图片发布统一格式处理解决方案

j2ee|解决|站点

 
Motivation:
     在WML中,由于支持的浏览器不同,对于图片格式也有不同的限制。比如常见的M3Gate,目前主要支持的是BNG格式,有的浏览器支持的是JPG的格式。但是如果图片不是自己加工的,比如是通过网页采集工具采集过来的图片格式各不相同,这样就需要在发布的时候进行统一的格式处理。
     在这里,由于个人一直从事的是J2EE的研发,所以在发布图片的时候都是采用Servlet来发布的图片,为了解决WAP中遇到的这个挑战,做了一些比较深入的研究。下面是整理后的解决方案(已经实现),来完成图片发布时统一图片格式。

Solutions:
     在J2EE的Web应用中,常见的规范是Servlet规范,由于目前主流的应用服务器都支持Servlet2.3规范,所以本方案的基本就是Servlet2.3规范,利用Servlet2.3中的Filter特性来过滤图片内容,整合图片格式。下面是具体的解决方案(假设用来发布图片的Servlet是getImage):

  •  提供前置的Filter(ImagePreFilter)
    在getImage前面配置前置的Filter,在客户端访问图片的时候,拦截客户端的请求,生成一个新的ServletResponse对象传递给getImage。
  • 提供后置的Filter(ImagePostFilter)
    在getImage上面配置后置的Filter,拦截getImage的返回结果,同时根据getImage的返回结果,将图片转换成统一的格式返回给客户端。
  • 外部实现HttpServletResponse类(ImageHttpServletResponse)
    保存Web Container的HttpServletResponse以及getImage这个Servlet输出到response对象中的信息,如cookie,Header,ContentType等。
  • 外部实现OutputStream类(ImageOutputStream)
    在ImageHttpServletResponse类获取outputstream的时候,返回一个自己定义的ImageOutputStream,ImageOutputStream将getImage这个servlet中输出的所有二进制数据保存起来(可以使用java.nio.ByteBuffer)

     下面是整个体系的调用逻辑图:
      开发环境搭建">
      
      下面介绍一些如何利用ImageIO对象来处理图片格式:

  • 从输入流中读取出一个BufferedImage对象:
    ByteArrayInputStream bin = new ByteArrayInputStream(outputstream.getBytes());
    BufferedImage src = ImageIO.read(bin);
  • 利用ImageIO.write方法,将图片转换成指定的格式并写入到指定的流中:
    ImageIO.write(bimage,"png",outs);
时间: 2024-09-17 18:46:59

J2EE搭建WAP站点时图片发布统一格式处理解决方案的相关文章

微软发布统一沟通新解决方案Lync

北京时间9月14日午间消息,微软公司今日在华盛顿宣布推出新一代统一沟通解决方案Microsoft Lync的预发布版,可使用户以新的方式随时随地保持互联.该方案计划2010年内上市. Lync是Communications Server.Communications Online和Communicator的系列产品的新品牌.该系列现在还包括Lync Web App和Lync Online.Lync 2010和Lync Server 2010的预发布版现在可供各种规模的企业免费试用,下载地址为ht

WAP设计基础:到底该如何设计一个WAP站点

文章描述:到底该如何设计一个WAP站点. WAP站点,这似乎是一个有点落伍的东西.在诞生之初,它很简陋,只能通过一个叫WML的标记语言来搭建没有任何美感的文字+链接页面.而今,绝大部分WAP站点都开始使用xhtml标记语言,不过在iOS.Android风潮席卷全球的今天,这个演进似乎显得有点苍白无力.但在中国,WAP的用户群体依然是移动设备上网的绝对主力军.那么,到底该如何设计一个WAP站点呢?个人以为,需要从设备.浏览器.任务.场景四个方面入手.一个WAP站点好与坏,不取决于页面的绚丽程度,不

用QuickWAP组件结合ASP建设Wap站点

站点 用QuickWAP组件建设Wap站点教程-准备篇 首先我们要简单了解一下什么是QuickWAP,QuickWAP V1.0精简版是一款基于WAP1.2协议,利用VB6 开发的一个辅助ASP+WML语言编写WAP网页的组件. 其次我们要安装安装QuickWAP V1.0精简版 安装过程如下: 1.首先将QuickWAP.dll文件拷贝到系统system32目录下. Windows 2000/Server/Advanced Server操作系统为: 系统盘符:\WINNT\system32\

Python 搭建Web站点之Web服务器网关接口_python

在 Python 搭建Web站点之Web服务器与Web框架 中我们弄清楚了Web 服务器.Web 应用程序.Web框架的概念.对于 Python 来说,越来越多的 Web 框架面世,在给我们更多选择机会的同时,也限制了我们对于 Web Server 的选择.同样是有着很多 Web 框架的Java,因为有着 servlet API 的存在,任何Java Web框架写的应用程序都可以运行在任意一个 Web Server 上. Python 社区当然也需要这样一套 API,来适配Web服务器和应用程序

iis服务器怎么配置wap站点

  扩展名 内容类型(MIME)    代码如下 复制代码 .wml text/vnd.wap.wml   .wbmp image/vnd.wap.wbmp   .wmlc application/vnd.wap.wmlc   .wmls text/vnd.wap.wmls   .wmlsc application/vnd.wap.wmlsc   重启 IIS 使其支持 WAP 页面的发布.  如果你使用的是 Apache 作为Web服务器的话,找到conf/httpd.conf这个配置文件,然

php作wap开发时遇到的问题

 1.文件格式首先要遇到的问题肯定是文件格式,在作web开发时,大家都是用的html或xhtml,到了wap开发时,就得用wml了.什么是wml?大家可以去查更详细的资料,我这里只是略微的提到.在我看来wml类似于xml,有非常严格的格式,在作wap页面时,都得用wml来作为显示. wml的语法非常简单,在用php作动态输出时,一定要发送一个头信息,标明本页面是wml,而不是别的什么*ml. header("Content-type: text/vnd.wap.wml; charset=\&qu

详解利用 JDK6 动态编译组件搭建 OSGi 运行时编译环境

但是我们知道,在开发 OSGi 环境下的 Bundle 时最麻烦的步骤之一就是搭建编译环境.即便利用 Eclipse 这样高效的 开发工具,由于 Bundle 个数的庞大以及同一 Bundle 的版本多样性,维护一个编译环境变得非常繁琐.常常我们需要对一 个 OSGi 的 Bundle 进行二次开发时,仅仅一个很小的改动都需要花大量的时间去搭建专为这套程序的编译环境.我们迫切 希望可以有一个运行时的编译环境来简化这些步骤,利用环境既有的依赖项来对代码进行编译. 本篇文章介绍 OSGi 的运行特性

《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——第2章 搭建容器运行时环境 2.1标准Linux系统的Docker配置

第2章 搭建容器运行时环境 自构建之初,Docker就运行在Linux之上.但与虚拟机不同,虚拟机包含了整个操作系统,而容器本身只是依靠单独的操作系统为其提供运行环境.这就是说,我们有诸多可选的方式来创建Docker的工作环境.具体方式包括以下这些. 标准Linux:多个主要的Linux发行版已将Docker打包在其中.如需最新的Docker特性,只要安装相应Linux发行版的最新版本即可.切记,Docker与操作系统有着密切的联系,因此,Linux的早期版本可能并不包含Docker运行所需的全

用QuickWAP组件结合ASP建设Wap站点第1/2页_应用技巧

用QuickWAP组件建设Wap站点教程-准备篇 首先我们要简单了解一下什么是QuickWAP,QuickWAP V1.0精简版是一款基于WAP1.2协议,利用VB6 开发的一个辅助ASP+WML语言编写WAP网页的组件. 其次我们要安装安装QuickWAP V1.0精简版 安装过程如下: 1.首先将QuickWAP.dll文件拷贝到系统system32目录下. Windows 2000/Server/Advanced Server操作系统为: 系统盘符:\WINNT\system32\ Win