您的位置 首页 java

用Java Web 的 Servlet创建登录时的验证码

在很多网站或者系统的登录界面,都有一个验证码,这个验证码主要是防止恶意攻击用的,现在验证方式越来越

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);

}

}

文章来源:智云一二三科技

文章标题:用Java Web 的 Servlet创建登录时的验证码

文章地址:https://www.zhihuclub.com/201062.shtml

关于作者: 智云科技

热门文章

网站地图