你是否曾经想过从jsp页面(或者servlet)中发送动态产生的图像?这篇技巧告诉你如何做。要运行这里的代码,你需要一个Tomcat或者其他支持JSP 1.1的web服务器。
当一个web页面带有image/jpeg (或者其他的图像格式)的MIME类型被发送时,你的浏览器将那个返回结果当作一个图像,然后浏览器显示图像,作为页面的一部分或者完全作为图像自身。要为你的jsp页面设置MIME类型,你需要设置页面的contentType属性:
<%@ page contentType="image/jpeg" ... %>
然后你需要创建一个BufferedImage绘制你的动态图像:
BufferedImage image = new BufferedImage(width,
height, BufferedImage.TYPE_INT_RGB);
创建完一个BufferedImage后,你需要得到图形环境进行绘制,一个Graphics或者Graphics2D对象:
Graphics g = image.getGraphics();
// or
Graphics2d g2d = image.createGraphics();
从现在起你就可以绘制图像内容了。对图形环境绘制就会画到BufferedImage。最开始这个图像都是黑色的,因此用你希望的背景颜色填充图像是一个不错的主意,然后,当你完成图像的绘制,你需要dispose图形环境:
g.dispose();
// or
g2d.dispose();
一旦完成图像的绘制,你在response中返回那个图像。你可以使用非标准的com.sun.image.codec.jpeg包中的JPEGImageEncoder类编码图像,或者如果你使用JDK1.4,你可以使用标准的ImageIO类。在使用JPEGImageEncoder时有一个技巧,你必须从ServletResponse取来ServletOutputStream而不能使用隐含的JSP输出变量out。
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
// or
ImageIO.write(image, "JPEG", out);
这里有一个从所有的可能方案中(例如g.dispose();或者g2d.dispose();)选取的一个完整的范例.这个例子使用Graphics对象绘制一个随机的多边形,图像通过JPEGImageEncoder绘制,你可以自由设置多边形的顶点数得到更复杂的形状,换言之,有更多顶点和边。
要运行这个范例,将从"<%@"到最后一个"%>"之间的jsp代码放到一个名为image.jsp的文件中,将那个文件放到你的web服务器可以找到的地方,在使用Tomcat的情况下是ROOT目录,启动Tomcat,访问http://localhost:8080/image.jsp.
<%@ page contentType="image/jpeg"
import="java.awt.*,java.awt.image.*,
com.sun.image.codec.jpeg.*,java.util.*"
%>
<%
// Create image
int width=200, height=200;
BufferedImage image = new BufferedImage(width,
height, BufferedImage.TYPE_INT_RGB);
// Get drawing context
Graphics g = image.getGraphics();
// Fill background
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
// Create random polygon
Polygon poly = new Polygon();
Random random = new Random();
for (int i=0; i < 5; i++) {
poly.addPoint(random.nextInt(width),
random.nextInt(height));
}
// Fill polygon
g.setColor(Color.cyan);
g.fillPolygon(poly);
// Dispose context
g.dispose();
// Send back image
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
%>
从jsp发送动态图像_JSP编程
时间: 2024-10-25 07:36:13
从jsp发送动态图像_JSP编程的相关文章
通过Jsp发送动态图像
js|动态 你是否曾经想过从jsp页面(或者servlet)中发送动态产生的图像?这篇技巧告诉你如何做.要运行这里的代码,你需要一个Tomcat或者其他支持JSP 1.1的web服务器. 当一个web页面带有image/jpeg (或者其他的图像格式)的MIME类型被发送时,你的浏览器将那个返回结果当作一个图像,然后浏览器显示图像,作为页面的一部分或者完全作为图像自身.要为你的jsp页面设置MIME类型,你需要设置页面的contentType属性: 然后你需要创建一个BufferedImage绘
JSP技巧:发送动态图像
你是否曾经想过从jsp页面(或者servlet)中发送动态产生的图像?这篇技巧告诉你如何做.要运行这里的代码,你需要一个Tomcat或者其他支持JSP 1.1的web服务器. 当一个web页面带有image/jpeg (或者其他的图像格式)的MIME类型被发送时,你的浏览器将那个返回结果当作一个图像,然后浏览器显示图像,作为页面的一部分或者完全作为图像自身.要为你的jsp页面设置MIME类型,你需要设置页面的contentType属性:<%@ page contentType="image
JSP技巧:发送动态图像
页面(或者servlet)中发送动态产生的图像?这篇技巧告诉你如何做.要运行这里的代码,你需要一个Tomcat或者其他支持JSP 1.1的web服务器. 当一个web页面带有image/jpeg (或者其他的图像格式)的MIME类型被发送时,你的浏览器将那个返回结果当作一个图像,然后浏览器显示图像,作为页面的一部分或者完全作为图像自身.要为你的jsp页面设置MIME类型,你需要设置页面的contentType属性: ããç¶åä½ éè¦å建ä¸ä¸ªBuffere
JSP由浅入深(3)—— 通过表达式增加动态内容_JSP编程
在我们前面的章节中,任何的HTML文件都可以转变成JSP文件,做法是通过改变它的扩展名为.jsp.当然,我们要知道是什么使得JSP有用呢?答案是嵌入Java的能力.将下列文本放置在一个以.jsp为扩展名的文件中,比如说这个文件为myjsp.jsp,然后将这个文件放置到你的JSP目录下并且在浏览器上看它.以下是具体的代码: <HTML> <BODY> Hello! The time is now <%= new java.util.Date() %> </BODY&
JSP应用的安全问题_JSP编程
一.概述 当网络编程越来越方便,系统功能越来越强大,安全性却指数倍地下降.这恐怕就是网络编程的不幸和悲哀了.各种动态内容生成环境繁荣了WWW,它们的设计目标就是为了给开发者更多的力量,给最终用户更多的方便.正因为如此,系统设计师和开发者必须明确地把安全问题作为一个考虑因素,事后追悔很难奏效. 从安全的角度来看,服务器端WWW应用的弱点来源于各种各样的交互能力和传输通道.它们是攻击者直接可以用来影响系统的工具.在攻击者寻找和利用系统安全漏洞时,它们总是给系统安全带来压力.对付所有这些攻击的通用
我认为JSP有问题(上)_JSP编程
(作者:小龙亭主Blueski编译 2000年12月22日 14:22) (编者:这篇文章的原文首次在国外出现时,JSP还只是一种刚刚崭露头角的技术,并没有像现在这样如日中天.现在看来这篇文章的某些观点可能会有一定的局限性,但我不得不承认这是一篇很大气的作品,其中涉及很多JSP的内在原理.因此,我想还是有必要把这篇文章介绍给大家,以便各位从另一个侧面更深入的了解JSP技术.) 如今每一个使用servlets的开发者都知道JSP,一种建构在servlet技术之上的由Sun公司发明并花费大量精力加以
JavaScript结合PHP实现网页制作中双下拉菜单的动态实现_JSP编程
本文介绍了双下拉菜单的动态实现的代码,例如:在主菜单中有"焦点新闻"."生活时尚"."心情故事"三个选项,通过"焦点新闻"的选择,子菜单自动生成如"国内"."国际"."体育"."文娱",依此类推. 利用javascript,我们可以轻松实现上述效果.但问题是,如果菜单中的选项是从数据库(或其他文件)中动态提取,实现起来就并不是轻而易举的了.笔者根据
十一、JSP及语法概要_JSP编程
11.1 概述 JavaServer Pages(JSP)使得我们能够分离页面的静态HTML和动态部分.HTML可以用任何通常使用的Web制作工具编写,编写方式也和原来的一样:动态部分的代码放入特殊标记之内,大部分以"<%"开始,以"%>"结束.例如,下面是一个JSP页面的片断,如果我们用http://host/OrderConfirmation.jsp?title=Core+Web+Programming这个URL打开该页面,则结果显示"Th
JSP语法Page指令_JSP编程
Page 指令 定义JSP文件中的全局属性. JSP 语法<%@ page [ language="java" ] [ extends="package.class" ] [ import="{package.class | package.*}, ..." ] [ session="true | false" ] [ buffer="none | 8kb | sizekb" ] [ autoFl