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;
public class ImageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
char[] charSquest="abcdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
int width=80;
int height=20;
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics g=image.getGraphics();
//填充背景
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
//画框
g.setColor(Color.BLACK);
g.drawRect(0,0, width-1, height-1);
Random r=new Random();
//设置字体和颜色
g.setColor(Color.BLUE);
g.setFont(new Font("粗体",Font.BOLD,15));
StringBuilder sb=new StringBuilder();
for(int i=0;i<4;i++){
int pos=r.nextInt(charSquest.length);
char c=charSquest[pos];
g.drawString(c+"", width/9*(i*2+1),15);
sb.append(c);
}
//将验证码存到session中
request.getSession().setAttribute("code",sb.toString());
//加干扰点
g.setColor(Color.RED);
for(int i=0;i<100;i++){
int x=r.nextInt(width);
int y=r.nextInt(height);
g.drawOval(x, y, 1,1);
}
ImageIO.write(image, "jpeg", response.getOutputStream());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
java 写的 servlet 的验证码
最新推荐文章于 2023-06-15 17:57:58 发布