WEB中简单的验证码

          

  •         spring MVC下简单的验证码源码。


  •                 @Controller  // 注解问控制器


  •                 @RequestMapping("/login") // 访问路径



  •                 public class GetCodeController {


  •                 @RequestMapping("/getCode")


  •                 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 = "ABCDEFGHIJKLMNOPQRSTUVWXYZqwertyuiopasdfghjklzxcvnm0123456789";

  •                 String number = "";

  •                 Random r = new Random();

  •                 for (int i = 0; i < size; i++) {

  •                 number += str.charAt(r.nextInt(str.length())); }

  •                 return number;

  •                 }}


        

验证码是我们在web开发中经常要用的的一个组件,特别是在请求分发中利用控制器来获取验证码,便于维护而且高大上。  

                 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。