看了B站关于HttpServletResponse的部分的讲解后,跟随视频写的一个关于编写图片验证码的应用,现将代码附上
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//让浏览器每隔3秒自动刷新
response.setHeader("refresh","3");
//在内存中创建一个图片
BufferedImage bufferedImage = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB);
//获取图片
Graphics2D g =(Graphics2D) bufferedImage.getGraphics(); //笔
//设置图片背景颜色
g.setColor(Color.white);
//颜色填满整个矩形
g.fillRect(0,0,80,20);
//填充数据
g.setColor(Color.blue);
g.setFont(new Font("null",Font.BOLD,20));
g.drawString(makeRandom(),0,20);
//告诉浏览器,这个请求用图片方式打开
response.setContentType("image/png");
//网站存在缓存,不让浏览器缓存该图片
response.setDateHeader("expires",-1);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
//把图片写给浏览器
ImageIO.write(bufferedImage,"png",response.getOutputStream());
}
//生成随机数方法
private String makeRandom(){
Random random = new Random();
String num = random.nextInt(9999999) + "";
StringBuffer sb = new StringBuffer();
for(int i =0 ;i<7-num.length();++i){
sb.append(0); //确保永远是7位数
}
return sb.toString()+num;
}