- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三部分
第三部分
第九章 动态页面
到现在为止,我们所写的servlet都返回一个标准的HTML页。但是构成WEB的要素不只是HTML,在本章,我们向大家介绍一下servlet返回的许多有趣的东西。我们先看一下为什么我们要返回不同的MIME类型和怎么返回。最常用的MIME 类型是由servlet产生(或由servlet中调用applet)图象。本章还对何时和怎么发送一个压缩的响应,以及用多阶段的RESPONSE实现PUSH。
9.1图象
视觉是人类获得信息的主要途径,读文字信息仅仅是一种方式,其实人们更喜欢看一些直觉的信息(如图片等)。现在的web开发中,几乎没有一个网站是不含任何图片信息的,即使是它们的图象并不是很专业。曾经有人说过:“一张图象所表示的内容要比一千个文字所表示的内容更形象”。
幸运的是一个servlet把一个图象作为其响应输出并不是很难,
一个servlet可以发送图象信息作为它的响应。经常出现的一种情况是:servlet必须产生或处理一副图象以向客户发送。图象,例如一个包含一个类似时钟的图象显示当前时间的网页,必须有720张图象(60分钟*12小时)存储在硬盘上,servlet决定当前时间发送哪张图片。这是一种很不明智的方法,一个聪明的servlet编程者,可以通过程序来动态的产生时钟的表盘和表针图片,或作为一种变通的方式,从硬盘读取表盘的图象,动态产生表针。
这儿有许多别的原因用servlet来产生一个图象。通过产生图象,servlet可以显示当前的库存表,一个可乐机中剩余的可乐的量的图形化报表。servlet可以 通过多种途径来对图象进行操作,例如可以更改它们颜色、大小、或外观,可以在图象上画新的图象或者把几张图象组合组成新的图象。
9.1.1产生图象
假设你想把一个以原始的像素保存的图象发送给某个人的话,你应该怎么做呢?我们假设它是一个24位真彩色的图象(每个像素点三个字节),图象具有100个像素高、100个像素宽。你可以采用用3000个字节流,每次发送一个像素的这种明显方式来发送。但是这就足够了吗?接收者如何对接收到的这3000个字节进行操作呢?为了让接收者明白如何处理接收到的信息,你必须告诉接收者你发送的是原始信息,真彩色点像素值,从左上角开始,一行一行的发送,每行有100个像素宽。呀!如果你决定用压缩来发送少一点的像素的话,应该怎么办呢?,你必须告诉接收者你采用何种压缩技术,然后接收者才能解压缩这个图象。这个问题一下变的复杂起来。
幸运的是,这个问题已经解决了,而且有几种不同的方式。每一种图象格式(GIF、JPEG、TIFF,等)代表一种解决方式。每一种图象格式定义一种标准的方式去对图象进行编码以便于后来对图象进行显示或加工是的解码。每一种编码技术都有一定的优势何局限。例如,在处理计算机产生的图象时,GIF编码格式优于其他格式,但是GIF格式的局限在于它只能处理256色的图象。JPEG压缩方式的优势在于能处理含有上万种颜色的真实照片,但是它是一种有“失真”的压缩方式,它在处理图象时会把图象的细节变模糊。
理解图象的编码方式,有利于理解servlet如何处理图象。一个servlet(例如Viewfile)可以通过把图象进行编码,然后把编码的格式原封不动的发送给客户端—浏览器,浏览器把它解码用于显示,来返回一个已经存在的图象。但是一个servlet产生或者加工一个图象,在发送到客户端之前,必须创建一个图象以外的内在的表达方式,对它进行加工、编码。
一个“Hello CUUG ”图象
例9-1是一个简单的例子,这个例子产生了一个GIF图象,图象的内容是“Hello CUUG!”,如图9-1所示。
例9-1 HelloCUUG
import java.io.*;
import java.awt.*;
import javax.servlet.*;
import javax.servlet.http.*;
import Acme.JPM.Encoders.GifEncoder;
public class HelloCUUG extends HttpServlet{
public void doGet (HttpServletRequest req,HttpServletResponse res) throws
ServletException,IOException
{
ServletOutputStream out = res.getOutputStream();
Frame frame = null;
Graphics g = null;
try{
frame = ne
文档评论(0)