- 浏览: 91537 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
-
Shuhui:
[align=right][align=center][siz ...
FusionCharts基本使用 -
liuweihug:
fusioncharts 图片2种方式使用java导出 - 项 ...
FusionCharts基本使用 -
strawren:
这个fusionchart免费的吗
FusionCharts基本使用 -
javaerman:
thank you 希望以后多多交流
FusionCharts基本使用 -
llnyxxzj:
[flash=200,200][/flash]
FusionCharts基本使用
请您先登录,才能继续操作
在Web应用中,经常需要动态生成图片,比如实时股市行情,各种统计图等等,这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。
本质上,浏览器向服务器请求静态图片如jpeg时,服务器返回的仍然是标准的http响应,只不过http头的contentType不是text/html,而是image/jpeg而已,因此,我们在Servlet中只要设置好contentType,然后发送图像的数据流,浏览器就能正确解析并显示出图片。
在Java中,java.awt和java.awt.image包提供了基本的绘制图像的能力,我们可以在内存中绘制好需要的图形,然后编码成jpeg或其他图像格式,最后发送相应给浏览器即可。下面是使用Servlet动态创建图像的详细步骤:
1.创建BufferedImage对象,该对象存在内存中,负责保存绘制的图像;
2.创建Graphics2D对象,该对象负责绘制所需的图像;
3.当绘制完成后,调用com.sun.image.codec.jpeg包的JPEG编码器对其编码;
4.最后将编码后的数据输出至HttpResponse即可。
注意com.sun.image.codec.jpeg包位于JDK目录的rt.jar包中,它不是公开的API,需要将rt.jar复制到web应用程序的WEB-INF/lib下。
我们先创建一个最简单的Servlet:
public class CreateImageServlet extends HttpServlet { |
我们首先设置了response的contentType为image/jpeg,这样浏览器就可以正确识别。
然后,创建一个大小为100x100的BufferedImage对象,准备绘图:
int width = 100; |
接着,BufferedImage对象中获取Graphics2D对象并绘图:
Graphics2D g = bi.createGraphics(); // 创建Graphics2D对象 |
然后,对BufferedImage进行JPEG编码:
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); |
编码后的JPEG图像直接输出到了out对象中,我们只要传入response. getOutputStream()就可以直接输出到HttpResponse中。
下面是完整的代码:
package com.crackj2ee.web.util; |
最后将这个Servlet编译,注册到web.xml中,映射路径为/CreateImage,写一个简单的index.html测试:
<html><head></head> |
如能正确显示,大功告成!
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
public class GenGif {
BufferedImage image;
// 创建 jpg 文件到指定路径下
public void createJpg(String path) {
try {
FileOutputStream fos = new FileOutputStream(path);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
encoder.encode(image);
bos.close();
} catch(FileNotFoundException fnfe) {
System.out.println(fnfe);
} catch(IOException ioe) {
System.out.println(ioe);
}
}
public static void main(String[] args) {
int width=400, height=300;
int xLength=300, yLength=150;
int count=5;
Vector data=new Vector();
data.addElement(new Integer(100));
data.addElement(new Integer(120));
data.addElement(new Integer(150));
data.addElement(new Integer(40));
data.addElement(new Integer(5));
GenGif jg = new GenGif();
jg.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = jg.image.getGraphics();
// 画坐标
g.setColor(Color.white);
g.fillRect(0, 0, width, height);
g.setColor(Color.blue);
g.drawLine(10,height-10,10,height-10-yLength);
g.drawLine(10,height-10,10+xLength,height-10);
// 连线
int yTo;
int yFrom = ((Integer)(data.elementAt(0))).intValue();
for (int i=1; i<count; i++) {
yTo=((Integer)(data.elementAt(i))).intValue();
g.drawLine(10+i*xLength/count,height-10,10+i*xLength/count,height-15);
g.drawLine(10+(i-1)*xLength/count,yFrom,10+i*xLength/count,yTo);
yFrom=yTo;
}
jg.createJpg("c:/aaa.jpg");
}
}
发表评论
-
合并多个文件内容
2013-08-01 14:48 1209import java.io.File; import j ... -
java压缩文件以及文件夹
2013-08-01 14:25 857import java.io.BufferedInputSt ... -
java定时器实现实时访问数据库以免数据库链接超时
2013-08-01 14:16 1306import java.util.TimerTask; ... -
java代理【转载】
2012-05-28 14:45 513代理模式在Spring中,运用的淋漓精致,面向切面的编程,变得 ... -
Java数据库连接池示例【转载】
2012-04-22 17:33 1850说明:通过ConnectionPool类的方法 g ... -
Java Sax解析xml【转载】
2012-04-22 12:56 7961. Java Sax解析是按照xml文件的顺序一 ... -
使用 dom4j 解析 XML【转载】
2012-04-22 12:47 755dom4j API 包含一个解析 XML 文档的工具。本 ... -
JDK动态代理和CGLIB代理的区别【转】
2012-03-09 13:37 2949spring默认使用jdk代理jdk代理:只能代理实现了接口的 ... -
关于java解压缩文件(rar或者zip)的实现示例 【转】
2012-03-06 17:27 858import java.io.File;import java ... -
Java中的IO整理完整版(一) 【转】
2012-03-06 17:25 877【案例1】创建一个新文件 import java.io ... -
Struts1于Struts2的区别【转】
2012-03-09 13:37 730最近上班。公司项目使用的是Struts2 Spring ... -
WebApplicationContext : org.springframework.web.context.ContextLoaderL...[转]
2011-10-09 09:49 1170如果您想要在自己所定义的Servlet类别中使用Spri ... -
技术博客收藏
2011-09-21 10:19 678http://www.cnblogs.com/Andy-lee ... -
关于Java读取xml文件的学习
2011-09-21 10:17 704一.java类 package com.java. ... -
java读取xml文件的四种方法【转】
2011-09-21 10:15 900Xml代码 <?xml vers ... -
FlexBuilder代码格式化方法
2011-08-07 17:15 1580如果你还在为官方Flex Builder不能够将代码有效的格式 ... -
JDBC连接数据库
2011-04-08 23:06 844很多朋友用熟了hibernate,后头来写小项目的时候,觉得用 ... -
jsp结合servlet实现文件上传
2011-04-08 22:25 1071前面受一些非计算机专 ...
相关推荐
Java servlet 自动生成 图片验证码 生成 Java源码
在IT行业中,登陆验证是确保用户安全性的重要环节,而动态生成的图片验证码是防止恶意自动登录和机器人攻击的有效工具。本文将深入探讨“登陆验证”与“Servlet动态生成图片验证码”的相关知识点,并提供实践指导。 ...
在这个场景中,我们使用Servlet来生成图片验证码,这是一种防止恶意自动化程序(如机器人)进行非法操作的安全机制。验证码通常是一串随机生成的字符,以图像形式显示,用户需要在输入框中正确输入才能完成验证。 ...
Java 使用 Servlet 动态生成图片 在 Web 应用中,经常需要动态生成图片,如实时股市行情、各种统计图等等。这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。本质上,浏览器向...
`servlet`生成验证码图片是通过服务器端动态创建一个包含随机字符的图像,用户需要输入图像中显示的文字或数字来验证其身份。以下将详细解释这个过程及其相关知识点: 1. **Servlet**:Servlet是Java中用于扩展...
在"使用Servlet生成图片验证码"这个主题中,我们首先会创建一个Servlet来生成随机的字母和数字组合,通常包含4到6位。这可以通过Java的Random类和Character类来实现。验证码生成后,将其保存在服务器的内存中,以便...
本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个简单而实用的验证码图片生成工具。 #### 一、验证码的基本概念 验证码(CAPTCHA)是一种区分计算机和人类的方法,常用于验证用户...
2. **图片生成**:图片可以由Servlet动态生成,例如通过绘制文本、图形或验证码。这通常涉及使用Java的`java.awt`和`javax.imageio`包中的类,如`BufferedImage`和`Graphics2D`。 3. **文件保存**:生成的图片需要...
下面将详细解释如何通过Servlet实现二维码图片生成的原理和步骤。 首先,理解二维码的基本概念。二维码是一种二维条形码,可以存储比传统一维条形码更多的信息,如文本、网址、联系人信息等。它由黑白相间的模块...
本教程主要讲解如何利用Servlet来实现动态生成验证码的功能,这对于防止机器人或恶意自动化程序在网站上进行非法操作至关重要。验证码通常由一串随机字符组成,用户需要正确输入才能完成特定操作,如注册、登录或...
### servlet动态生成登录验证图片详解 #### 背景与需求 在现代Web开发中,为了提高用户体验并增强安全性,动态生成图片成为一种常见的技术手段。例如,在登录页面上使用动态验证码图片可以有效防止机器人自动登录...
验证码的主要目的是区分人类用户和自动化程序,通过要求用户输入图片上的文字或者完成简单的数学问题,来验证其为真实的人类。这有助于防止垃圾邮件、恶意注册、自动化攻击等网络安全问题。 二、Servlet简介 ...
在servlet中动态生成验证码图片,可被JSP或servlet引用,每次刷新都会改变验证码
Tomcat JNDI 数据源 自动生成程序 Servlet 版 本程序自动判断Tomcat版本,兼容tomcat 5.0、5.5、6.0等版本, 根据项目名自动生成 JNDI 配置文件,使程序员从手动配置JNDI数据源中解脱出来。 使用说明: 1、把...
在JSP中显示Servlet生成或读取的图片是一项常见的任务,尤其在动态网站开发中,例如用户上传的图片处理、验证码生成等场景。本篇将详细介绍如何实现这一功能,涉及的知识点包括Java Servlet、JSP、HTTP协议以及文件I...
在IT行业中,自动生成静态网页技术与Servlet的结合使用是一种高效的方法,特别是在处理高并发访问和提高网站性能时。Servlet是Java服务器端编程的一个重要组件,它允许开发者创建动态、交互式的Web应用。本篇文章将...
要生成动态验证码,首先需要在Servlet中创建一个`BufferedImage`对象,定义验证码的宽度和高度。然后,通过随机数生成器填充图像,可以绘制不同颜色的线条和字符,增加识别难度。使用`Random`类生成随机字符序列,...
在IT领域,特别是Web开发中,验证码是一种常见的安全机制,用于区分...总之,使用JSP和Servlet技术生成验证码是一种有效提升Web应用安全性的方法,通过合理设计和实现,可以有效地抵御自动化攻击,保护用户数据安全。