1.生成验证码Servlet

 1 package com.isit.servlet;
 2 
 3 import javax.imageio.ImageIO;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import javax.servlet.http.HttpSession;
10 import java.awt.*;
11 import java.awt.image.BufferedImage;
12 import java.io.IOException;
13 import java.util.Random;
14 
15 @WebServlet("/checkCodeServlet")
16 public class CheckCodeServlet extends HttpServlet {
17     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
18 
19 
20         int width = 100;
21         int height = 50;
22 
23         //1.创建一对象,在内存中图片(验证码图片对象)
24         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
25 
26 
27         //2.美化图片
28         //2.1 填充背景色
29         Graphics g = image.getGraphics();//画笔对象
30         g.setColor(Color.PINK);//设置画笔颜色
31         g.fillRect(0, 0, width, height);
32 
33         //2.2画边框
34         g.setColor(Color.BLUE);
35         g.drawRect(0, 0, width - 1, height - 1);
36 
37         String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789";
38         //生成随机角标
39         StringBuffer sb = new StringBuffer();
40         Random ran = new Random();
41         for (int i = 1; i <= 4; i++) {
42             int index = ran.nextInt(str.length());
43             //获取字符
44             char ch = str.charAt(index);//随机字符
45             sb.append(ch);
46             //2.3写验证码
47             g.drawString(ch + "", width / 5 * i, height / 2);
48         }
49         String checkCode = sb.toString();
50         HttpSession session = request.getSession();
51         session.setAttribute("checkCode", checkCode);
52         //2.4画干扰线
53         g.setColor(Color.GREEN);
54 
55         //随机生成坐标点
56 
57         for (int i = 0; i < 10; i++) {
58             int x1 = ran.nextInt(width);
59             int x2 = ran.nextInt(width);
60 
61             int y1 = ran.nextInt(height);
62             int y2 = ran.nextInt(height);
63             g.drawLine(x1, y1, x2, y2);
64         }
65 
66 
67         //3.将图片输出到页面展示
68         ImageIO.write(image, "jpg", response.getOutputStream());
69 
70 
71     }
72 
73     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
74         this.doPost(request, response);
75     }
76 }
CheckCodeServlet

相关文章: