精华内容
下载资源
问答
  • 验证码图片在网站的注册、登录中非常常见,下面将主要使用BufferedImage内存图像、Graphics画笔、ImageIO输出图像三个工具类实现生成随机验证码图片。关于三个工具的功能等详细信息,请自行查找JDK。 package ...

    验证码图片在网站的注册、登录中非常常见,下面将主要使用BufferedImage内存图像、Graphics画笔、ImageIO输出图像三个工具类实现生成随机的验证码图片。关于三个工具的功能等详细信息,请自行查找JDK。

    package cn.hestyle.web.servlet;
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @WebServlet("/verification_code")
    public class VerificationCodeServlet extends HttpServlet{
    
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    			throws IOException {
    		//step1:创建画布
    		int width = 120, height = 30;
    		BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    		//step2:获取画笔
    		Graphics graphics = bufferedImage.getGraphics();
    		//step3:设置背景颜色
    		graphics.setColor(Color.pink);
    		//使用pink填充整个矩形
    		graphics.fillRect(0, 0, width, height);
    		//step4:划出4条干扰线
    		graphics.setColor(Color.GRAY);
    		Random random = new Random();
    		for (int i = 0; i < 4; ++i) {
    			int x1 = random.nextInt(width), y1 = random.nextInt(height);
    			int x2 = random.nextInt(width), y2 = random.nextInt(height);
    			//drawLine划线(x1, y1)(x2, y2)两点
    			graphics.drawLine(x1, y1, x2, y2);
    		}
    		
    		//step5:划出四个随机数,left为数字左偏移量,down为数字下偏移量(固定)
    		int left = 20, down = 20;
    		for (int i = 0; i < 4; ++i) {
    			int r = random.nextInt(10);
    			graphics.drawString(r + "", left, down);
    			left += random.nextInt(20) + 5;
    		}
    	
    		//step6:设置响应头类型
    		response.setContentType("image/jpeg");
    		//step7:将画布上的内容输出到response中
    		ImageIO.write(bufferedImage, "jpeg", response.getOutputStream());
    	}
    	
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException {
    		doGet(request, response);
    	}
    }
    

    index.html文件内容

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>随机验证码</title>
    <script type="text/javascript">
    	function refreshCode(){
    		//获取img标签
    		var imgTag = document.getElementById("verfCode");
    		//修改img标签中src属性,注意后面需要带一个时间戳,否则两次访问同样的src,并不会再次访问后台刷新验证码
    		imgTag.src = "/Verification_Code_Test/verification_code?" + new Date().getTime();
    	}
    </script>
    </head>
    <body>
    	用户名<input type = "text"><br>
    	密码<input type = "password"><br>
    	验证码<input type = "text">
    	<img id = "verfCode" src = "/Verification_Code_Test/verification_code">
    	<!-- 使用 js 函数重新生成验证码 -->
    	<a href = "javascript:refreshCode()">看不清楚,点击刷新验证码</a>
    </body>
    </html>
    

    运行结果:
    在这里插入图片描述
    注意:在web.xml中需要设置默认访问界面
    在这里插入图片描述
    当然你也可以在url中明确指出访问index.html界面。

    如果想要生成的随机验证码图片更加美观,可以该表随机数的颜色等等。也可以使用一些第三方的jar包直接生成。

    展开全文
  • 生成随机验证码

    2020-04-12 13:48:24
    java web随机验证码生成 所有注解都将会在代码中体现出来! 写出service,用于用户使用界面获取验证码 主要操作部分! 最后就是实现代码的截图,每次刷新页面就会得到新的随机字符,并且颜色也会跟着变化。 ...

    java web随机验证码的生成


    所有注解都将会在代码中体现出来!

    1. 写出service,用于用户使用界面获取验证码
      在这里插入图片描述
    2. 主要操作部分!
      在这里插入图片描述
      最后就是实现代码的截图,每次刷新页面就会得到新的随机字符,并且颜色也会跟着变化。
      在这里插入图片描述
    展开全文
  • 生成随机验证码和图片,简易使用。 在web项目中随意应用。可自己修改
  • import org.apache.shiro.SecurityUtils;import org.apache.shiro.session.Session;import org.apache.shiro.subject.Subject;import org.springframework.stereotype....import org.springframework.web.bi...

    import org.apache.shiro.SecurityUtils;

    import org.apache.shiro.session.Session;

    import org.apache.shiro.subject.Subject;

    import org.springframework.stereotype.Controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    import javax.imageio.ImageIO;

    import javax.servlet.ServletOutputStream;

    import javax.servlet.http.HttpServletResponse;

    import java.awt.*;

    import java.awt.font.FontRenderContext;

    import java.awt.geom.Rectangle2D;

    import java.awt.image.BufferedImage;

    import java.io.ByteArrayOutputStream;

    import java.io.IOException;

    import java.util.Random;

    /**

    * 类名称:登录验证码

    */

    @Controller

    @RequestMapping("/code")

    public class SecCodeController {

    @RequestMapping

    public void generate(HttpServletResponse response){

    ByteArrayOutputStream output = new ByteArrayOutputStream();

    String code = drawImg(output);

    Subject currentUser = SecurityUtils.getSubject();

    Session session = currentUser.getSession();

    session.setAttribute(Const.SESSION_SECURITY_CODE, code);

    try {

    ServletOutputStream out = response.getOutputStream();

    output.writeTo(out);

    out.close();

    } catch (IOException e) {

    //e.printStackTrace();

    }

    }

    private String drawImg(ByteArrayOutputStream output){

    String code = "";

    for(int i=0; i<4; i++){

    code += randomChar();

    }

    int width = 70;

    int height = 25;

    BufferedImage bi = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);

    Font font = new Font("Times New Roman",Font.PLAIN,20);

    Graphics2D g = bi.createGraphics();

    g.setFont(font);

    Color color = new Color(66,2,82);

    g.setColor(color);

    g.setBackground(new Color(226,226,240));

    g.clearRect(0, 0, width, height);

    FontRenderContext context = g.getFontRenderContext();

    Rectangle2D bounds = font.getStringBounds(code, context);

    double x = (width - bounds.getWidth()) / 2;

    double y = (height - bounds.getHeight()) / 2;

    double ascent = bounds.getY();

    double baseY = y - ascent;

    g.drawString(code, (int)x, (int)baseY);

    g.dispose();

    try {

    ImageIO.write(bi, "jpg", output);

    } catch (IOException e) {

    //e.printStackTrace();

    }

    return code;

    }

    private char randomChar(){

    Random r = new Random();

    String s = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789";

    return s.charAt(r.nextInt(s.length()));

    }

    }

    展开全文
  • 使用YZMHelper帮助类即可 代码如下: using System; using System.Web; using System.Drawing; using System.Security.Cryptography; namespace ... #region 生成随机数字  ///  /// 生成随机数字  
  • 生成随机验证码 并且验证 引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </...

    生成随机验证码 并且验证

    引入依赖

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- Swagger 接口文档 -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <artifactId>slf4j-api</artifactId>
                        <groupId>org.slf4j</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    

    代码

    package com.example.demo.controller;
    
    import com.example.demo.until.CreateValidateCode;
    import io.swagger.annotations.*;
    import org.springframework.validation.annotation.Validated;
    import org.springframework.web.bind.annotation.*;
    
    import javax.imageio.ImageIO;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.io.OutputStream;
    
    /**
     * @program:
     * @description:
     * @author:
     * @create:
     **/
    @Api(tags = "生成验证码")
    @RestController
    @Validated
    public class ValidateCodeController {
    
    	/**
         * 验证码
         */
        public static final String SESSION_CODE_NAME = "code";
        
        /**
         * 图片
         */
        public static final String PNG = "png";
    
        /**
         * 生成随机验证码
         * @param response
         * @param request
         * @throws IOException
         */
        @ApiOperation(value = "随机验证码",notes = "随机验证码")
        @RequestMapping("/code")
        public void getValidateCode(HttpServletResponse response, HttpServletRequest request) throws IOException {
            //创建输出流
            OutputStream outputStream = response.getOutputStream();
            //获取验证码
            CreateValidateCode createValidateCode = new CreateValidateCode();
            //存入cookie中
            String generateVerifyCode = createValidateCode.getString();
            Cookie userCookie=new Cookie("generateVerifyCode",generateVerifyCode);
            //获取session
    //      HttpSession session = request.getSession();
            //将验证码存入session,做登录验证
    //      session.setAttribute(SESSION_CODE_NAME, generateVerifyCode);
            response.addCookie(userCookie);
            //获取验证码图片
            BufferedImage image = createValidateCode.getImage();
            ImageIO.write(image, PNG, outputStream);
            //关流
            outputStream.flush();
            outputStream.close();
        }
    }
    
    
    package com.example.demo.until;
    
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.util.Random;
    
    /**
     * @program:
     * @description:
     * @author:
     * @create:
     **/
    public class CreateValidateCode {
    
        /**
         * 图像
         */
        private BufferedImage image;
    
        /**
         * 验证码
         */
        private String str;
    
        /**
         * 随机生成位数
         */
        private static final Integer SIZE = 4;
    
        /**
         * 随机的字符
         */
        private static char[] code = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
                'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
                'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    
        /**
         * 初始化属性
         */
        public CreateValidateCode() {
            init();
        }
    
        public static CreateValidateCode Instance() {
            return new CreateValidateCode();
        }
    
        /**
         * 获取验证图片
         * @return
         */
        public BufferedImage getImage() {
            return this.image;
        }
    
        /**
         * 取得图片的验证码
         * @return
         */
        public String getString() {
            return str;
        }
    
        public void init() {
            // 在内存中创建图象
            int width = 60, height = 20;
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            // 获取图形上下文
            Graphics g = image.getGraphics();
            // 生成随机类
            Random random = new Random();
            // 设定背景色
            g.setColor(getRandColor(200, 250));
            g.fillRect(0, 0, width, height);
            // 设定字体
            g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
            // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
            g.setColor(getRandColor(160, 200));
            for (int i = 0; i < 155; i++) {
                int x = random.nextInt(width);
                int y = random.nextInt(height);
                int xl = random.nextInt(12);
                int yl = random.nextInt(12);
                g.drawLine(x, y, x + xl, y + yl);
            }
            // 取随机产生的认证码(4位数字)
            String sRand = "";
            for (int i = 0; i < SIZE; i++) {
                String rand = String.valueOf(code[random.nextInt(code.length)]);
                sRand += rand;
                // 将认证码显示到图象中
                g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
                // 调用函数出来的颜色相同,只能直接生成
                g.drawString(rand, 13 * i + 6, 16);
            }
            // 赋值验证码
            this.str = sRand;
            // 图象生效
            g.dispose();
            /* 赋值图像 */
            this.image = image;
        }
    
        /**
         * @param fc
         * @param bc
         * @return 给定范围获得随机颜色
         */
        private Color getRandColor(int fc, int bc) {
            Random random = new Random();
            if (fc > 255) {
                fc = 255;
            }
            if (bc > 255) {
                bc = 255;
            }
            int r = fc + random.nextInt(bc - fc);
            int g = fc + random.nextInt(bc - fc);
            int b = fc + random.nextInt(bc - fc);
            return new Color(r, g, b);
        }
    }
    
    

    接口效果
    在这里插入图片描述
    //校验验证码
    cookie形式 无需登录情况

    	Cookie[] cookies = request.getCookies();
           String generateVerifyCode = null;
           for (Cookie cookie : cookies) {
               if (cookie.getName().equals("generateVerifyCode")) {
                   generateVerifyCode = cookie.getValue();
               }
           }
        //cookie中验证码generateVerifyCode 
    

    session形式 无需登录情况

    前端输入参数:inputCode
    HttpSession session = request.getSession();
      if(session.getAttribute(SESSION_CODE_NAME).toString().equals(inputCode)){
      //验证码验证通过
      }
    
    展开全文
  • .NET生成随机验证码

    2019-08-02 01:38:28
    新建一个Web窗体,命名为"RandomImage.aspx",意在通过它输出含有4位随机验证码的图片。其中字符是数字或大写字母。它利用了一个基本知识:数字0~9对应的ASCII码为48~57,字母A~Z对应的ASCII码为65~90。在生成随机校验...
  • Web全栈笔记之生成随机验证码

    千次阅读 2017-01-23 17:13:04
    js验证码 title > < style type = "text/css" > #login { width : 50 px ; height : 30 px ; line-height : 30 px ; margin : 0 auto ; background-color : #eee ; text-align : center ; ...
  • python生成随机验证码

    2017-07-11 15:13:00
    web登录中使用验证码,本质是在前端的img标签的src属性,动态传一张验证码图片。而动态使用验证码功能,则需使用pillow模块来动态生成验证码验证码本质 # 前端 <img src="/check_code/" style="width: 120...
  • 生成随机验证码 package com.web; //验证码生成处理类 import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java...
  • servlet生成随机验证码

    2016-06-20 11:43:03
    代码是可以运行的,,前提是你要搭建好web开发环境,
  • 随机图片校验码验证码生产包,用于生产动态图片校验码,验证码图片生成
  • 登录生成随机验证码

    2018-04-17 11:34:54
    验证码生成是单独的一个servlet,通过web.xml进行拦截。先贴web.xml配置代码,很简单。[html] view plain copy&lt;servlet&gt; &lt;servlet-name&gt;/CheckCode&lt;/servlet-name&gt; &...
  • C#生成随机验证码

    2019-10-04 21:52:19
    usingSystem; usingSystem.Drawing; usingSystem.Drawing.Drawing2D; usingSystem.Drawing.Imaging; usingSystem.IO; usingSystem.Text;...usingSystem.Web; namespaceDemo { ///<su...
  • 常用的生成验证码程序 ,图片效果如下: 源程序如下: 代码如下:using System; using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Text; using System.Collections;...
  • 将学习成果,分享给大家,也便于自己温习学过的知识。 import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet....import javax.
  • Java Web 生成图片验证码

    千次阅读 2019-05-28 10:03:05
    首先创建验证码所需要的图片。先声明图片的宽高参数,然后再声明一个类型为预定义图像类型之一 BufferedImage,并设定所创建图像的宽高和类型。...然后在图片中添加由随机字母和数字组成的验证码。首先声明一个Ra...
  • 大部分WEB项目都会用到登录功能,而登录功能大部分又会涉及到动态验证码生成!那如何通过后台生成动态验证码并传到后台呢?这就是我今天所要写的:  标题:动态验证码生成  开发语言:JAVA  SSH使用情况:...
  • web项目实现验证码判断登录、注册功能
  • 【实例简介】JavaWeb项目生成随机验证码,使用IDEA开发,可以导入到Eclipse和MyEclipse中【实例截图】【核心代码】41cae0ac-4950-4dfe-aa02-36e100752e17└── AuthCode├── AuthCode.eml├── AuthCode.iml├─...
  • 1.新建一个servlet,路径为servlet/ValidateCodeServlet.java 2.在web.xml配置上述新建的servlet类 3.jsp页面代码 源码下载地址:http://www.yayihouse.com/yayishuwu/chapter/1057
  • ashx代码 ...ImportsSystemImportsSystem.WebImportsSystem.DrawingImportsSystem.IOImportsSystem.Web.UIPublicClasslogin_validatecode:ImplementsIHttpHandler#Region"验证码的长度(默认6个)"Private...
  • * 随机生成验证码 */ @WebServlet("/checkcodesverlet") public class CheckCodeSverlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ...
  • asp.net生成随机验证码

    2009-05-29 23:25:00
    using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;...using System.Web.UI.WebContr

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 430
精华内容 172
关键字:

web生成随机验证码