在很多网站或者系统的登录界面,都有一个验证码,这个验证码主要是防止恶意攻击用的,现在验证方式越来越
public class CreateSalt extends HttpServlet
{
public void doGet(HttpServletRequest request , HttpServletResponse response)
throws ServletException, IOException
{
// 1.禁止浏览器缓存随机图片
response.setDateHeader(” Expires “, -1);
response.setHeader(“Cache-Control”, “no-cache”);
response.setHeader(“Pragma”, “no-cache”);
// 2.通知客户机以图片方式打开发送过去的数据
response.setHeader(“Content-Type”, “image/jpeg”);
// 3.在内存中创建一副图片
BufferedImage image = new BufferedImage(60, 30, BufferedImage.TYPE_INT_RGB);
// 4.向图片上写数据
Graphics g = image.getGraphics();
// 设背景色
g.setColor(Color.BLACK);
g.fillRect(0, 0, 60, 30); //
// 5.设置写入数据的颜色和字体
g.setColor(Color.RED);
g.set Font (new Font(null, Font.BOLD, 20));
// 6.向图片上写数据
String num = makeNum();
// 把随机生成的数值,保存到 session , 然后通过session就可以取到验证码
request.getSession().setAttribute(“salt”, num);
g.drawString(num, 0, 20);
// 7.把写好数据的图片输出给浏览器
ImageIO.write(image, “jpg”, response.getOutputStream());
}
// 该函数时随机生成4位数字
public String makeNum()
{
Random r = new Random();
// 9999表示可以生成4位
String num = r.nextInt(9999) + “”;
StringBuffer sb = new StringBuffer();
// 如果不够4位,前面补零(如”12″,返回的长度为2,通过循环就可以补两个0)
for (int i = 0; i < 4 – num. length (); i++)
{
sb. append (“0”);
}
num = sb.toString() + num;
return num;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
this.doGet(request, response);
}
}