验证码

柔光的暖阳◎ 2022-03-21 16:10 340阅读 0赞

1、需求

  1. 在访问登录页面时,需要生产验证码。从而防止用户使用程序恶意登录。

2、代码实现

  1. 步骤1:修改登录页面,确定验证码图片显示的位置

20190203181304143.png

  1. 步骤2:编写VerifyCodeServlet实现类
  2. public class VerifyCodeServlet extends HttpServlet {
  3. private static final long serialVersionUID = 1L;
  4. //生成图片
  5. public void doGet(HttpServletRequest request, HttpServletResponse response)
  6. throws ServletException, IOException {
  7. //1、宽高
  8. int width = 60;
  9. int height = 30;
  10. String data = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwtxyz";
  11. Random random = new Random();
  12. // 2、创建一个图片
  13. BufferedImage bufferedImage = new BufferedImage(width, height,
  14. BufferedImage.TYPE_INT_RGB);
  15. // 3、获得面板
  16. Graphics graphics = bufferedImage.getGraphics();// 得到画图对象 --- 画笔
  17. //4、填充一个矩形
  18. // 绘制任何图形之前 都必须指定一个颜色
  19. graphics.setColor(getRandColor(200, 250));
  20. graphics.fillRect(0, 0, width, height);
  21. // 绘制边框
  22. graphics.setColor(Color.WHITE);
  23. graphics.drawRect(0, 0, width - 1, height - 1);
  24. // 设置输出字体
  25. graphics.setFont(new Font("宋体", Font.BOLD, 18));
  26. //5、 随机字
  27. for (int i = 0; i < 4 ; i++) {
  28. // 随机颜色
  29. graphics.setColor(new Color(random.nextInt(225), random
  30. .nextInt(225), random.nextInt(225)));
  31. // 获得随机字
  32. int index = random.nextInt(data.length());
  33. String str = data.subString(index,index+1);
  34. // 写入
  35. graphics.drawString(str , width/6 * (i+1) , 20);
  36. }
  37. // 6、 绘制干扰线
  38. for (int i = 0; i < 3; i++) {
  39. // 随机颜色
  40. graphics.setColor(new Color(random.nextInt(225), random
  41. .nextInt(225), random.nextInt(225)));
  42. //随机绘制线
  43. graphics.drawOval(random.nextInt(width),random.nextInt(height), 2 , 2);
  44. }
  45. // 将上面图片输出到浏览器 ImageIO
  46. ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
  47. }
  48. public void doPost(HttpServletRequest request, HttpServletResponse response)
  49. throws ServletException, IOException {
  50. doGet(request, response);
  51. }
  52. 步骤3:编写web.xml文件
  53. <servlet>
  54. <servlet-name>VerifyCodeServlet</servlet-name>
  55. <servlet-class>com.klh.VerifyCodeServlet</servlet-class>
  56. </servlet>
  57. <servlet-mapping>
  58. <servlet-name>VerifyCodeServlet</servlet-name>
  59. <url-pattern>/VerifyCodeServlet</url-pattern>
  60. </servlet-mapping>

3、添加点击图片或文字,更换验证码

  1. <img id="imgId" onclick="changImg()" style="cursor:pointer;" src="${pageContext.request.contextPath}/VerifyCodeServlet"/>
  2. <a href="javascript:void(0)" onclick="changImg()">换一张</a>
  3. <script type="text/javascript">
  4. function changImg(){
  5. $("imgId").attr("src","${pageContext.request.contextPath}/VerifyCodeServlet?t="+new Data());
  6. }
  7. </script>

发表评论

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

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

相关阅读

    相关 验证

    验证码的验证是我们登陆网页时经常进行的操作,我也做了一个简单的验证码,包括颜色以及噪线等等 @RequestMapping(value = "/Frame/Verif

    相关 验证

    1、需求      在访问登录页面时,需要生产验证码。从而防止用户使用程序恶意登录。 2、代码实现      步骤1:修改登录页面,确定验证码图片显示的位置 !

    相关 验证

    验证码 google验证码kaptcha Java验证码 patchca 验证码工具类 google验证码kaptcha [https://bl

    相关 验证---短信验证

    最近自学了短信的验证码实现。以下是自己用的一种方法实现的完整的过程。 短信验证登陆(前端+后台) 1、前端填写手机号以及点击触发,以电话号码为参数调用发送验证登录短信方法并