publicclassGetCodeController{publicvoidexecute(HttpServletResponseresponse,HttpSessionsession)throwsException{//0.创建空白图片BufferedImageimage=newBufferedImage(100,30,B...
public class GetCodeController {
public void execute(HttpServletResponse response,HttpSession session) throws Exception{
//0.创建空白图片
BufferedImage image = new BufferedImage(100,30,BufferedImage.TYPE_INT_RGB);
//1.获取图片画笔
Graphics g = image.getGraphics();
Random r = new Random();
//2.设置画笔颜色
g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));
//3.绘制矩形的背景
g.fillRect(0, 0, 100, 30);
//4.调用自定义的方法,获取长度为5的字母数字组合的字符串
String number = getNumber(5);
//将图片字符存入session,用于验证码检查使用
session.setAttribute("scode", number);
g.setColor(new Color(0,0,0));
g.setFont(new Font(null,Font.BOLD,24));
//5.设置颜色字体后,绘制字符串
g.drawString(number, 5, 25);
//6.绘制8条干扰线
for(int i=0;i<8;i++){
g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255),r.nextInt(255)));
g.drawLine(r.nextInt(100), r.nextInt(30), r.nextInt(100), r.nextInt(30));
}
response.setContentType("image/jpeg");
OutputStream ops = response.getOutputStream();
ImageIO.write(image, "jpeg", ops);
ops.close();
}
private String getNumber(int size){
String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
String number = "";
Random r = new Random();
for(int i=0;i
number+=str.charAt(r.nextInt(str.length()));
}
return number;
}
}
验证码已经做好了,不用注解和xml的形式怎么让jsp显示图片
展开