`
czllfy
  • 浏览: 108263 次
  • 来自: ...
社区版块
存档分类
最新评论

JSP技巧:发送动态图像

阅读更多
你是否曾经想过从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);
  %> (代码实验室)

分享到:
评论

相关推荐

    使用技巧:JSP中如何发送一个动态图像

    在JavaServer Pages (JSP) 中,发送动态图像是一项实用的技术,这允许开发者在网页上实时生成和展示图像。以下是如何在JSP中实现这一功能的详细步骤: 首先,为了告诉浏览器你将发送一个图像而不是普通的HTML内容,...

    通过Jsp发送动态图像

    7. **编码并发送图像**: 最后,你需要将`BufferedImage`对象编码为JPEG格式,并通过`ServletOutputStream`发送到客户端。在JSP中,你可以使用`response.getOutputStream()`获取输出流,然后使用`JPEGImageEncoder`...

    jsp动态生成图像

    **JSP动态生成图像**是一种常见的Web开发技术,主要用于在服务器端动态创建并发送图像到客户端。这种技术在很多场景下都非常有用,比如验证码生成、图表制作、个性化头像生成等。下面我们将深入探讨JSP如何实现动态...

    从jsp发送动态图像

    你是否曾经想过从jsp页面(或者servlet)中发送动态产生的图像?这篇技巧告诉你如何做。...@ page contentType=”image/jpeg” … %&gt;然后你需要创建一个BufferedImage绘制你的动态图像:BufferedIm

    动态显示JSP服务器内存的Ajax程序 图像版_systemjc

    在IT行业中,动态显示JSP服务器内存的Ajax程序是一个实用的技术方案,主要用于实时监控服务器的内存使用情况。本文将深入探讨这一技术,并结合"图像版_systemjc"这一具体实现进行详细解析。 首先,JSP(JavaServer ...

    JSP聊天室可发送表情

    【JSP聊天室可发送表情】是一个针对初学者设计的小型Web应用,它利用Java Server Pages(JSP)技术实现了一个简单的在线聊天功能,用户不仅可以发送文本消息,还能发送表情,提高了聊天的趣味性和交互性。...

    JSP源码——动态显示JSP服务器内存的Ajax程序 图像版_systemjc.zip

    【JSP源码——动态显示JSP服务器内存的Ajax程序 图像版_systemjc.zip】是一个包含JSP和Ajax技术的示例项目,旨在通过图形化的方式动态展示JSP服务器的内存使用情况。在这个项目中,开发者可以学习到如何利用JSP、...

    jsp源码其他类别动态显示JSP服务器内存的Ajax程序图像版-systemjc

    本文档介绍了一个特殊的JSP项目——“动态显示JSP服务器内存的Ajax程序 图像版_systemjc”,该项目通过Ajax技术实现了对JSP服务器内存状态的动态监控,并以图像的形式直观展示。 #### Ajax技术简介 Ajax...

    Jsp常用技巧:图片验证码

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术。在本案例中,我们将讨论如何使用JSP实现一个常见的功能——图片验证码。验证码的主要目的是防止自动化脚本或机器人对网站进行恶意操作,它...

    jsp源码+邮件发送

    在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它允许开发者将Java代码嵌入到HTML页面中,以实现服务器端的逻辑处理。在这个“jsp源码+邮件发送”的主题中,我们将深入探讨如何利用JSP来实现...

    动态显示JSP服务器内存的Ajax程序 图像版-systemjc

    总结来说,"动态显示JSP服务器内存的Ajax程序 图像版_systemjc"是一个综合运用了JSP、Ajax和图表技术的监控工具,能够帮助管理员实时查看服务器内存使用情况,提升运维效率。了解并掌握这些技术,对于开发高效、易用...

    jsp servlet 动态验证码

    在本项目中,我们结合了JSP、AJAX和Servlet技术来创建一个动态验证码系统。下面将详细讲解这三个技术以及它们在实现动态验证码中的应用。 **JSP(JavaServer Pages)** JSP是Java的一种视图技术,用于生成动态网页...

    高级编程技术:第2章 Web动态编程技术JSP.ppt

    ### 高级编程技术:第2章 Web动态编程技术JSP #### 2.1 JSP的概念及特性 - **JSP简介**:JSP(Java Server Pages)是一种基于Java的服务器端脚本技术,用于生成动态网页内容。它允许开发者在HTML文档中嵌入Java...

    jsp+servlet+c++图像拼接系统

    【标题】:“jsp+servlet+c++图像拼接系统”是一个基于Web的图像处理应用,它融合了Java Web技术和C++编程语言,实现了图像的高效拼接功能。在这样的系统中,用户可以通过Web界面上传图片,后台由Servlet进行处理,...

    [其他类别]动态显示JSP服务器内存的Ajax程序 图像版_systemjc.zip

    总结来说,这个项目结合了JSP、Ajax和图像化展示技术,实现了动态监控服务器内存的功能,对于开发和运维人员了解服务器健康状况具有实际价值。通过不断学习和实践,你可以更好地理解和应用这些技术,提升Web应用的...

    动态显示JSP服务器内存的Ajax程序 图像版-systemjc.zip

    标题中的“动态显示JSP服务器内存的Ajax程序 图像版-systemjc.zip”表明这是一个使用Ajax技术来实时展示JSP服务器内存状态的项目,且包含了图形化的界面。Ajax(Asynchronous JavaScript and XML)是一种在无需刷新...

    javaweb开发JSP资料大全

    JSP安全编程实例浅析、JSP编程进度条设计实例、JSP的运行内幕、JSP和IIS的最佳解决方案实例分析...-response对象和application对象、JSP连接各类数据库大全(上)、JSP内置对象、JSP技巧发送动态图像、jsp计数器制作手册

    Servlet和JSP技术简述(英文翻译)

    Servlet和JSP(JavaServer Pages)是Java平台上的两种核心技术,主要用于构建动态Web应用程序。它们在Web开发中的角色至关重要,尤其在处理客户端请求和生成响应方面。以下是对Servlet和JSP技术的详细解释。 1.1 ...

Global site tag (gtag.js) - Google Analytics