第一种方式:纯代码
先写jsp:
在编写CaptServlet:
1 package cn.itcast.web.controller; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics; 6 import java.awt.image.BufferedImage; 7 /** 8 * 用户登陆 9 */ 10 import java.io.IOException; 11 import java.util.Random; 12 13 import javax.imageio.ImageIO; 14 import javax.servlet.ServletException; 15 import javax.servlet.http.HttpServlet; 16 import javax.servlet.http.HttpServletRequest; 17 import javax.servlet.http.HttpServletResponse; 18 19 public class CaptServlet extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 protected void doGet(HttpServletRequest request, HttpServletResponse response) 23 throws ServletException, IOException { 24 int width = 120; 25 int height = 25; 26 //验证码 27 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); 28 //画笔 29 Graphics g = image.getGraphics(); 30 //设置颜色,设置一个边线 31 g.setColor(Color.green); 32 g.drawRect(0, 0, width, height); 33 //设置填充色 34 g.setColor(Color.yellow); 35 g.fillRect(1, 1, width-2, height-2); 36 //干扰线 37 g.setColor(Color.gray); 38 Random r = new Random(); 39 g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height)); 40 //随机验证码 41 g.setColor(Color.black); 42 g.setFont(new Font("宋体", Font.BOLD|Font.ITALIC, 20)); 43 int x = 20; 44 for(int i=0;i<4;i++) { 45 String num = r.nextInt(10)+""; 46 g.drawString(num, x, 20); 47 x+=20; 48 } 49 //输出到页面 50 ImageIO.write(image, "jpg", response.getOutputStream()); 51 } 52
53 protected void doPost(HttpServletRequest request, HttpServletResponse response) 54 throws ServletException, IOException { 55 // TODO Auto-generated method stub 56 doGet(request, response); 57 } 58 59 }
页面效果:
//**********************推荐(validatecode 的jar包网上能搜到)
两行轻松搞定。**********************************************************************************************
原文地址:https://www.cnblogs.com/csh520mjy/p/10274438.html
时间: 2024-11-13 14:11:14