点击生成动态验证码(工具类)

喜欢ヅ旅行 2022-05-15 15:51 339阅读 0赞

1.页面

  1. <!--验证码-->
  2. <div class="col-sm-3">
  3. <img id="vcode" src="/checkCode" style="cursor:pointer">
  4. </div>
  5. <script type="text/javascript"> $("#vcode").click(function(){ $(this).attr("src" , "/checkCode?t=" + new Date()); }); </script>
  6. //触发图片的点击事件
  7. $("#vcode").click();

2.后台controller

  1. package com.czxy.controller;
  2. import org.springframework.http.HttpStatus;
  3. import org.springframework.http.ResponseEntity;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import javax.imageio.ImageIO;
  7. import javax.servlet.http.HttpServletResponse;
  8. import javax.servlet.http.HttpSession;
  9. import java.awt.*;
  10. import java.awt.image.BufferedImage;
  11. import java.io.OutputStream;
  12. import java.util.Random;
  13. @RestController
  14. public class CheckCodeController {
  15. @RequestMapping("checkCode")
  16. public ResponseEntity<Void> checkCode(HttpServletResponse response, HttpSession session){
  17. try {
  18. int width = 80;
  19. int height = 32;
  20. //create the image
  21. BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  22. Graphics g = image.getGraphics();
  23. // set the background color
  24. g.setColor(new Color(0xDCDCDC));
  25. g.fillRect(0, 0, width, height);
  26. // draw the border
  27. g.setColor(Color.black);
  28. g.drawRect(0, 0, width - 1, height - 1);
  29. // create a random instance to generate the codes
  30. Random rdm = new Random();
  31. String hash1 = Integer.toHexString(rdm.nextInt());
  32. // make some confusion
  33. for (int i = 0; i < 50; i++) {
  34. int x = rdm.nextInt(width);
  35. int y = rdm.nextInt(height);
  36. g.drawOval(x, y, 0, 0);
  37. }
  38. // generate a random code
  39. String capstr = hash1.substring(0, 4);
  40. session.setAttribute("validateCode", capstr);
  41. g.setColor(new Color(0, 100, 0));
  42. g.setFont(new Font("Candara", Font.BOLD, 24));
  43. g.drawString(capstr, 8, 24);
  44. g.dispose();
  45. response.setContentType("image/jpeg");
  46. OutputStream strm = response.getOutputStream();
  47. ImageIO.write(image, "jpeg", strm);
  48. strm.close();
  49. return ResponseEntity.ok().build();
  50. } catch (Exception e){
  51. e.printStackTrace();
  52. return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
  53. }
  54. }
  55. }

发表评论

表情:
评论列表 (有 0 条评论,339人围观)

还没有评论,来说两句吧...

相关阅读

    相关 动态生成验证

    动态生成验证码在很多地方可以用到,最近在学习牛腩视频的时候,正好看到了,就此简单总结一下。 为了简单方便,我们新建一个验证码测试的项目名为test,然后在项目中新建一个文件夹