package jimmee.cn.edu.zju;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyImage extends HttpServlet
...{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
...{
/** *//**************************************************************************
* 创建一个Bufferedimage对象:通过调用BufferedImage的构造函数,给出宽度、高度
* 以及由BufferedImage类中定义的常量所定义的图像表示类型,从而我们创建了一个
* java.awt.image.BufferedImage对象。表示类型并不重要,因为我们并不直接操纵
* BufferedImage中的二进制位,而且在转换到JPEG时大多数类型都产生相同的结果。我们
* 这里使用TYPE_INT_RGB。
***************************************************************************/
int width = 320, height = 400;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
/** *//**************************************************************************
* 通过调用图像的getGraphics方法,将得到的Graphics对象转换成Graphics2D,然后使用
* Java 2D丰富的绘画操作,坐标变换,字体设置和填充调色板执行具体的绘画。
**************************************************************************/
Graphics2D g2d=(Graphics2D) image.getGraphics();
g2d.setColor(Color.YELLOW);
g2d.fillRect(0, 0, width, height);
// 定义渐进色
GradientPaint gp1 = new GradientPaint(15, 75, Color.RED,
50, 120, Color.GREEN, false);
g2d.setPaint(gp1);
g2d.fill(new Rectangle(50, 10, width-100, height-220));
GradientPaint gp2 = new GradientPaint(15, 75, Color.RED,
50, 120, Color.GREEN, true);
g2d.setPaint(gp2);
g2d.fill(new Rectangle(50, 210, width-100, height-220));
// 部署图形
g2d.dispose();
/** *//**********************************************************************
* 设置Content-Type响应报头(设置MIME类型)
**********************************************************************/
response.setContentType("image/jpeg");
//获得输出流
OutputStream out=response.getOutputStream();
//以JPEG格式将BufferedImage发送到输出流
ImageIO.write(image, "jpg", out);
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
...{
doGet(request,response);
}
}
分享到:
相关推荐
本教程将深入讲解如何使用Servlet生成随机验证码。 首先,让我们了解Servlet的基本概念。Servlet是一个Java类,遵循Servlet API规范,它被部署在Web服务器上,用于扩展服务器的功能,处理来自客户端(如浏览器)的...
在"使用Servlet生成图片验证码"这个主题中,我们首先会创建一个Servlet来生成随机的字母和数字组合,通常包含4到6位。这可以通过Java的Random类和Character类来实现。验证码生成后,将其保存在服务器的内存中,以便...
本文将详细介绍如何使用Servlet与JSP技术动态生成图像验证码。 #### 一、准备工作 1. **开发环境设置**:确保你的开发环境中安装了JDK,并配置好相应的环境变量;此外,还需要搭建一个支持Servlet的服务器,如...
Java 使用 Servlet 动态生成图片 在 Web 应用中,经常需要动态生成图片,如实时股市行情、各种统计图等等。这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。本质上,浏览器向...
5. **创建水印**:使用`java.awt.Graphics2D` API来绘制水印。我们可以设置字体、颜色、透明度和位置,然后在原始图片上绘制文本或图像水印。 6. **合并图片**:将带有水印的新图片覆盖到原始图片上,形成一个新的...
Servlet是Java Web开发中的一...总之,Servlet生成图片验证码是一种常见的Web安全实践,通过结合Java的图形库和HTTP交互,可以实现高效且安全的用户验证机制。在设计和实现时,应充分考虑用户体验和安全性之间的平衡。
9. **输出图像**:最后,使用`ImageIO.write()`方法将BufferedImage对象写入到输出流中,以JPEG格式返回给客户端。 10. **安全性考虑**:虽然这种简单的验证码生成方式能防止一些基本的自动化攻击,但对于更复杂的...
- 在HTML页面上,使用`<img>`标签加载Servlet生成的验证码图片。例如:`<img src="VerificationCodeServlet">`。 - 设置`img`标签的`src`属性指向Servlet的URL,浏览器会自动发起GET请求获取验证码图片。 4. **...
在Web开发中,Servlet是一种Java技术,用于生成动态网页内容。本教程主要讲解如何利用Servlet来实现动态生成验证码的功能,这对于防止机器人或恶意自动化程序在网站上进行非法操作至关重要。验证码通常由一串随机...
2. **图像处理**:使用Java AWT库中的 `BufferedImage` 和 `Graphics2D` 类来创建和绘制图像。`BufferedImage` 用于存储图像数据,`Graphics2D` 提供绘图功能。 3. **输出图片**:通过 `JPEGCodec` 类和 `...
本文将详细介绍如何使用Java Servlet技术动态生成登录验证图片。 #### 概念理解 在Web应用中,动态生成图片意味着图片是在服务器端根据特定逻辑实时创建的,并通过HTTP响应传输给客户端(通常是浏览器)。与传统的...
Java 图片验证码是一种常见的实现方式,它通过生成具有一定随机性的图像,并结合文本字符,来确保只有人类用户能够正确识别并输入。这种方式能够有效抵御自动化攻击,提高系统的安全性。 根据提供的文件信息,本文...
2. **绘制图像**:使用`java.awt`和`javax.imageio`库创建一个新的图像,并在其上绘制字符串。可以使用`Graphics2D`类来扭曲文字,增加识别难度。 3. **添加噪点和线条**:为了进一步混淆验证码,可以在图像上添加...
在IT行业中,验证码是一种常见的安全机制,用于防止自动化的...以上就是Java使用Servlet生成图片验证码的基本流程。这个过程涉及到图像处理、随机数生成、HTTP响应等多个方面的知识,是Java Web开发中的一个重要实践。
总的来说,使用Servlet生成动态验证码是一项涉及服务器端编程、图像处理和随机数生成的综合任务。熟练掌握这些技术,不仅可以提升Web应用的安全性,也有助于开发者对Java EE体系的深入理解。通过实践和不断的优化,...
总结,`DrawServlet`展示了如何利用Servlet处理图像数据,结合Java 2D API在JPEG图像上生成图形文字,然后将结果以JPEG格式返回给浏览器。这种技术在创建动态的、含有个性化信息的图像服务时非常有用,比如生成带有...
以下是使用Java生成图像验证码的核心代码段落: ```java import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.Random; import ...
在Java Web开发中,我们可以使用Servlet和JSP来实现一个简单的图形验证码。以下将详细介绍如何利用这两个技术进行验证码的实现。 首先,理解验证码的基本原理:验证码是一种通过图像显示随机字符或数字的方式,用户...
在实现HighCharts导出Servlet的过程中,开发者会使用到这些Batik库,通过SVG渲染引擎将HighCharts生成的SVG字符串转换为实际的图像文件。这个过程可能包括以下步骤: 1. 接收前端发送的SVG数据,通常是通过POST请求...