imgCode 图片验证码
图片验证码:
代码操作:
/*imageType参数:BufferedImage.TYPE_INT_RGB(透明) ………… 等等,第一个参数第二个参数:宽度,高度*/
BufferedImage image = new BufferedImage(80,20,imageTye);
/*Graphics2D 获取到图片,用于在java平台获取到一个二维图形*/
/*Graphics2D :提供了对几何图形,坐标转换,颜色管理或者文本格式的控制*/
Graphics2D g = (Graphics2d)image.getGraphics();
/*设置图片的背景*/
g.setColor(Color.RED);
/*设置背景填充,第一个第二个是位置,三四是填充的大小。*/
g.fillRect(x,y,80,80);
/*向图片上写数据*/
/*设置图片上的文字颜色*/
g.setColor(Color.RED);
/*设置字体的风格*/
g.setFont(new Font("微软雅黑",Font.BOLD ,20));
/*将文本加入到图片,三个参数,第一个是文本,二三个是坐标*/
g.drawString(3601,10,10);
/*设置响应的MIME类型*/
response.setContextType("image/jpeg");
/*控制浏览器不能缓存*/
response.setDateHeader("expries",-1);
response.setHeader("Pragma","NO-cache");
response.setHeader("Cache-Control","No-cache");
/*图片发送回客户端*/
ImageIO.write(image,"jpg",response.getOutputStream());
在验证码设置中,有个看不清,换一张。
在里面再次请求:
两次请求的地址一样,服务器就指挥处理第一次请求,第二次请求得到的结果跟第一次结果就是一样的。 第一次缓存了上次的请求的结果。
所以:
src = "/路径/………"+Math.random();
/*这样每次就每次不一样的结果*/
创建session用于装每个用户的验证码:
每创建一个随机数:
HttpSession hs = request.getSession();
hs.setAttribute("code", num);