package com.xunfang.demo; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @title://演示输出验证码 * @author:阳阳 * @date: 2015-5-13 */ public class ServletResponsw1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建图片 int width =120; int height = 30; BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //拿到此图片的画笔 Graphics g = image.getGraphics(); //设定边框 g.setColor(Color.blue); g.drawRect(0, 0, width, height); g.setColor(Color.gray); g.fillRect(1, 1, width-2, height-2); //增加干扰圆点 Random r = new Random(); g.setColor(Color.green); for (int i = 0; i < 100; i++) { g.drawOval(1, 1, r.nextInt(width),r.nextInt(height)); } //设定中文 g.setColor(Color.yellow); g.setFont(new Font("楷体", Font.BOLD, 1)); String s = "增加分析验证码的难IHAVEmoney度可以加30条干扰线中国好声音深圳讯方通信技术有限公司刘德华成龙";
//输出4个字符 StringBuffer sb = new StringBuffer(); for (int i = 0; i <4; i++) { char c = s.charAt(r.nextInt(s.length())); sb.append(c); g.drawString(c+"", 20+20*i+r.nextInt(5)*((i%2)==0?1:-1),20+r.nextInt(5)*((i%2)==0?1:-1)); } request.getSession().setAttribute("code", sb.toString()); ImageIO.write(image, "img", response.getOutputStream()); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }