在JSP验证 验证码,不用Session

29 篇文章 1 订阅

在JS生成验证码数字,传入后台,再生成验证码。

1、JSP:

<img  id="checkCode" align="middle" title="点击刷新验证码" οnclick="getNewCode()"  style="cursor: pointer;">
2、JS:

var CODE;//全局变量

function createCode(){  
	CODE = "";  
    var codeLength = 4;//验证码的长度  
    //所有候选组成验证码的字符,可以用中文  
    var selectChar = new Array(0,1,2,3,4,5,6,7,8,9,'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','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');  
    for(var i=0;i<codeLength;i++)  
    {  
        var charIndex = Math.floor(Math.random()*60);  
        CODE +=selectChar[charIndex];  
    }  
    return CODE;  
}  

function getNewCode(){  
    //显示验证码  
    $("#checkCode").attr("src","/utils/getValidateCodeNewMethod.do?code="+createCode());  
}  

3、Java:

@RequestMapping("getValidateCodeNewMethod")
	public void getValidateCodeNewMethod(HttpServletRequest request,HttpServletResponse response,String code)throws Exception{
	     
	response.setContentType("image/jpeg");  
    response.setHeader("Cache-Control", "no-cache");  
    response.setHeader("Pragma", "No-cache");  
    response.setDateHeader("Expires", 0L);  
   
    int width = 80;  
    int height = 30;  
    BufferedImage image = new BufferedImage(width, height, 1);  
    Graphics g = image.getGraphics();  
    Random random = new Random();  
    g.setColor(getRandColor(200, 250));  
    g.fillRect(0, 0, width, height);  
    
    g.setFont(new Font("Fixedsys", Font.BOLD,28));
    g.setColor(getRandColor(160, 200));  
    for (int i = 0; i < 155; i++) {  
        int x = random.nextInt(width + 100);  
        int y = random.nextInt(height + 100);  
        int xl = random.nextInt(10);  
        int yl = random.nextInt(12);  
        g.drawOval(x, y, x + xl, y + yl);  
    }  
   

    String sRand=code;  
    for (int i = 0; i < sRand.length(); i++) {  
       
        String rand = sRand.substring(i, i+1);  
       
        g.setColor(new Color(20 + random.nextInt(110), 20 + random  
                .nextInt(110), 20 + random.nextInt(110)));  
        g.drawString(rand, 14 * i + 5, 25);  
    }  
 
    g.dispose();  
    ServletOutputStream imageOut = response.getOutputStream();  
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(imageOut);  
    encoder.encode(image);  
   }  
	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);  
       }  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值