使用Servlet绘制动态的数字图片

本文介绍了一个简单的Java Web项目,该项目使用Servlet技术生成包含随机数字的验证码图片。文章详细展示了web.xml配置文件、index.jsp页面重定向请求以及核心的GenerateImageServlet类实现。

以下是web.xml的配置

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>GenerateImageServlet</servlet-name> <servlet-class>com.jadyer.servlet.GenerateImageServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>GenerateImageServlet</servlet-name> <url-pattern>/servlet/image</url-pattern> </servlet-mapping> </web-app>

以下是index.jsp的内容<%@ page language="java" pageEncoding="UTF-8"%> <%response.sendRedirect(request.getContextPath()+"/servlet/image");%>

以下核心GenerateImageServlet.java的代码package com.jadyer.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; import javax.imageio.stream.ImageOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 绘制随机数字图片的Servlet */ public class GenerateImageServlet extends HttpServlet { private static final long serialVersionUID = 760480418450678827L; // 产生的图像的宽度,单位为像素 private final static int WIDTH = 260; // 产生的图像的高度,单位为像素 private final static int HEIGHT = 60; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { // 设置输出的内容的类型为JPEG图像 response.setContentType("image/jpeg"); OutputStream os = response.getOutputStream(); createImage(os); os.close(); } /** * 绘制输出整个图形 */ public void createImage(OutputStream os) throws IOException { // 创建一个BufferedIamge对象 BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); // 获取的Graphics2D对象,通过这个对象完成绘图 Graphics2D g = image.createGraphics(); // 绘制背景图 g.setColor(Color.white); g.fillRect(0, 0, WIDTH, HEIGHT); // 画边框 g.setColor(Color.black); g.drawRect(0, 0, WIDTH - 1, HEIGHT - 1); // 设定字体 g.setFont(new Font("Times New Roman", Font.PLAIN, 60)); // 生成随机类 Random random = new Random(); // 取随机产生的6位数字 for (int i = 0; i < 6; i++) { String rand = String.valueOf(random.nextInt(10)); // 将随机产生的数字显示到图象中 g.drawString(rand, 40 * i + 20, 50); } // 生成图像的输出流 ImageOutputStream ios = ImageIO.createImageOutputStream(os); ImageIO.write(image, "jpeg", ios); ios.close(); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值