你是否曾经想过从jsp页面(或者servlet)中发送动态产生的图像?这篇技巧告诉你如何做。要运行这里的代码,你需要一个Tomcat或者其他支持JSP 1.1的web服务器。
当一个web页面带有image/jpeg (或者其他的图像格式)的MIME类型被发送时,你的浏览器将那个返回结果当作一个图像,然后浏览器显示图像,作为页面的一部分或者完全作为图像自身。要为你的jsp页面设置MIME类型,你需要设置页面的contentType属性:
然后你需要创建一个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);
%> (代码实验室)
分享到:
相关推荐
在JavaServer Pages (JSP) 中,发送动态图像是一项实用的技术,这允许开发者在网页上实时生成和展示图像。以下是如何在JSP中实现这一功能的详细步骤: 首先,为了告诉浏览器你将发送一个图像而不是普通的HTML内容,...
7. **编码并发送图像**: 最后,你需要将`BufferedImage`对象编码为JPEG格式,并通过`ServletOutputStream`发送到客户端。在JSP中,你可以使用`response.getOutputStream()`获取输出流,然后使用`JPEGImageEncoder`...
**JSP动态生成图像**是一种常见的Web开发技术,主要用于在服务器端动态创建并发送图像到客户端。这种技术在很多场景下都非常有用,比如验证码生成、图表制作、个性化头像生成等。下面我们将深入探讨JSP如何实现动态...
你是否曾经想过从jsp页面(或者servlet)中发送动态产生的图像?这篇技巧告诉你如何做。...@ page contentType=”image/jpeg” … %>然后你需要创建一个BufferedImage绘制你的动态图像:BufferedIm
在IT行业中,动态显示JSP服务器内存的Ajax程序是一个实用的技术方案,主要用于实时监控服务器的内存使用情况。本文将深入探讨这一技术,并结合"图像版_systemjc"这一具体实现进行详细解析。 首先,JSP(JavaServer ...
【JSP聊天室可发送表情】是一个针对初学者设计的小型Web应用,它利用Java Server Pages(JSP)技术实现了一个简单的在线聊天功能,用户不仅可以发送文本消息,还能发送表情,提高了聊天的趣味性和交互性。...
【JSP源码——动态显示JSP服务器内存的Ajax程序 图像版_systemjc.zip】是一个包含JSP和Ajax技术的示例项目,旨在通过图形化的方式动态展示JSP服务器的内存使用情况。在这个项目中,开发者可以学习到如何利用JSP、...
本文档介绍了一个特殊的JSP项目——“动态显示JSP服务器内存的Ajax程序 图像版_systemjc”,该项目通过Ajax技术实现了对JSP服务器内存状态的动态监控,并以图像的形式直观展示。 #### Ajax技术简介 Ajax...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术。在本案例中,我们将讨论如何使用JSP实现一个常见的功能——图片验证码。验证码的主要目的是防止自动化脚本或机器人对网站进行恶意操作,它...
在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它允许开发者将Java代码嵌入到HTML页面中,以实现服务器端的逻辑处理。在这个“jsp源码+邮件发送”的主题中,我们将深入探讨如何利用JSP来实现...
总结来说,"动态显示JSP服务器内存的Ajax程序 图像版_systemjc"是一个综合运用了JSP、Ajax和图表技术的监控工具,能够帮助管理员实时查看服务器内存使用情况,提升运维效率。了解并掌握这些技术,对于开发高效、易用...
在本项目中,我们结合了JSP、AJAX和Servlet技术来创建一个动态验证码系统。下面将详细讲解这三个技术以及它们在实现动态验证码中的应用。 **JSP(JavaServer Pages)** JSP是Java的一种视图技术,用于生成动态网页...
### 高级编程技术:第2章 Web动态编程技术JSP #### 2.1 JSP的概念及特性 - **JSP简介**:JSP(Java Server Pages)是一种基于Java的服务器端脚本技术,用于生成动态网页内容。它允许开发者在HTML文档中嵌入Java...
【标题】:“jsp+servlet+c++图像拼接系统”是一个基于Web的图像处理应用,它融合了Java Web技术和C++编程语言,实现了图像的高效拼接功能。在这样的系统中,用户可以通过Web界面上传图片,后台由Servlet进行处理,...
总结来说,这个项目结合了JSP、Ajax和图像化展示技术,实现了动态监控服务器内存的功能,对于开发和运维人员了解服务器健康状况具有实际价值。通过不断学习和实践,你可以更好地理解和应用这些技术,提升Web应用的...
标题中的“动态显示JSP服务器内存的Ajax程序 图像版-systemjc.zip”表明这是一个使用Ajax技术来实时展示JSP服务器内存状态的项目,且包含了图形化的界面。Ajax(Asynchronous JavaScript and XML)是一种在无需刷新...
JSP安全编程实例浅析、JSP编程进度条设计实例、JSP的运行内幕、JSP和IIS的最佳解决方案实例分析...-response对象和application对象、JSP连接各类数据库大全(上)、JSP内置对象、JSP技巧发送动态图像、jsp计数器制作手册
Servlet和JSP(JavaServer Pages)是Java平台上的两种核心技术,主要用于构建动态Web应用程序。它们在Web开发中的角色至关重要,尤其在处理客户端请求和生成响应方面。以下是对Servlet和JSP技术的详细解释。 1.1 ...