美文网首页
jsp:java:生成图形验证码(纯数字)

jsp:java:生成图形验证码(纯数字)

作者: 思无邪cc | 来源:发表于2017-03-11 15:56 被阅读231次

以下是jsp页面代码:

<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%@ page trimDirectiveWhitespaces="true" %>
<%!
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);
}
%>
<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
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));
//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);
// 随机产生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<4;i++){
    String rand=String.valueOf(random.nextInt(10));
    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);
}

// System.out.println("freedesign:"+sRand);
// 将认证码存入SESSION
session.setAttribute("freedesign",sRand);

// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%> 

以下是js调用方法:

function getYanZhengMa(){
    //freedesign_image.jsp为以上jsp文件,参数id此处可不传。
    //yanzhengma_img为验证码img标签的id
    var src = "freedesign_image.jsp?id="+new Date().getTime();
    $("#yanzhengma_img").attr("src",src);
}

相关文章

  • jsp:java:生成图形验证码(纯数字)

    以下是jsp页面代码: 以下是js调用方法:

  • Java+JSP实现算数验证码

    类似《纯Java+JSP验证码》 一、创建Servlet类验证结果 二、生成算数画板 三、用户登录页面

  • Java实现验证码功能

    字母数字混合验证码 CaptcahCode.java index.jsp code.jsp 算术验证码 使用kca...

  • 前后端分离情况下的图形验证码

    图形验证码包含两部分:图片和文字验证码。在JSP时代,图形验证码生成和验证是通过Session机制来实现的:后端生...

  • Java数字型验证码生成

    生成数字验证码 就是简单的html页面调用jsp页面实现的 jsp代码如下:randomNumber.jsp ht...

  • JavaWeb(第十周)

    day12 一、生成图片 二、验证码 //Demo.java //login.jsp //VerifyCodeSe...

  • 验证码、水印、缩放

    随机生成验证码 1、验证码1、纯数字2、纯字母3、数字字母混合4、计算公式 3 + 5 =打乱字符串:str_s...

  • 2018-09-04

    Java生成图形验证码与前端输入验证 在刷牛客时,遇到了关于web表单登陆中图形验证码实现的问题,所以试着将其编码...

  • java生成图形验证码

    1.需求提供一个接口,请求接口,返回一个图形验证码 2.Controller接口 3.随机生成验证码的工具类 4....

  • Java生成图形验证码

    参考原文:https://www.cnblogs.com/h--d/p/8258610.html 1.生成验证码工...

网友评论

      本文标题:jsp:java:生成图形验证码(纯数字)

      本文链接:https://www.haomeiwen.com/subject/mbaagttx.html