========================jsp==============================
function changeImg(){
var a=document.getElementById("mySpan");
a.innerHTML='<img align="middle" src="ImageServlet"/> <a href="#" onclick="changeImg();">看不清,换一张!</a>'; //会复盖“mySpan”位置
}
<td width="350"><div id="kan" style="text-align:left;">
<span id="mySpan"><img alt="点击更换验证码" align="middle" title="点击更换验证码" src="ImageServlet" /><a href="#" onclick="changeImg();">看不清,换一张!</a> </span>
</div></td>
</tr>
=====================web.xml=================
<servlet>
<servlet-name>ImageServlet</servlet-name>
<servlet-class>com.e8online2.comm.util.IdentifyingServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>/ImageServlet</url-pattern>
</servlet-mapping>
=======================最后从session中获取原来的验证码与jsp中上传的验证码比较就可以了=================
package com.e8online2.comm.util;
import java.awt.Color;
import java.awt.Font;
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.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IdentifyingServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/jpeg");
// 给定范围获得随机颜色
// 设置页面不缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width = 60, height = 17;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandom(254, 255));
g.fillRect(0, 0, width, height);
// 设定字体
g.setFont(new Font("Cooper Black", Font.PLAIN, 18));
// 画边框
// g.setColor(new Color());
// g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandom(230, 240));
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(100 + random.nextInt(130), 100 + random.nextInt(130), 100 + random.nextInt(130)));// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand, 13 * i + 6, 14);
}
// 将认证码存入SESSION
request.getSession().setAttribute("IdentifyingCode", sRand);
// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
}
private Color getRandom(int mixValue, int maxValue) {
Random random = new Random();
if (mixValue > 255)
mixValue = 255;
if (maxValue > 255)
maxValue = 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);
int rgb = mixValue + random.nextInt(maxValue - mixValue);
return new Color(rgb, rgb, rgb);
}
}
分享到:
相关推荐
里面附带一个JSP页面,直接引用该页面就可以生成4位的随机验证码图片,很好用,另外有一个用JS代码生成4为验证码!
生成验证码图片的jsp代码生成验证码图片的jsp代码
将生成的四个验证图片放在一个页面上以供比对,全部可以运行。 四种方法分别为: 1. 数字、字母、汉字混合验证码,叠影(给力)、扭曲 2. 数字、字母混合验证码,扭曲 3. 汉字验证码,噪点,未加扭曲(未使用字符集...
Java随机生成验证码图片,适用于web登录验证等。个人觉得很不错~
此文件包含生成android签名文件keystore及验证的源码还包含生成的keystore文件。放到项目中即可使用
java license生成验证的实现
java数字签名(签名生成,用证书验证签名)
JAVA身份证号码验证工具,通过身份证号码生成规则,能验证15位、18位身份证号码,必备验证方式
有没有发现最后生成了一串长的base64编码 把这一串编码放到img标签在前面加上"data:image/gif;base64,"是能直接使用的 ;base64,(你的base64编码)"/> 验证码最佳宽高计算公式:字体大小和图片高度相等,图片宽度=...
NULL 博文链接:https://bijian1013.iteye.com/blog/2339883
使用truelicense实现用于JAVA工程license机制(包括license生成和验证)
保证java web ,spirngboot,tomcate web安全,可以现在IP,mac,自定义参数,License生成器 (JAVA源码+界面) 其中包括license授权机制的原理和制作license的具体步骤 增加了mac 地址验证
Java 生成数字签名,数字证书的实现代码,得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名.Signature mySig = Signature.getInstance("SHA1WithRSA"); //用指定算法产生签名对象 mySig.initSign...
JWT生成token及验证(过期时间)用于前后断分离,及APP认证,可结合redis使用也可单独使用。
用java写的自动生成验证码图片,和验证,用的servlet技术
java生成二维码两种方式,包含.JAR,demo
生成验证码图片 java类中获得验证码的方法: session.getAttribute("checkcode"); jsp页面中显示图片的方式: ${pageContext.request.contextPath}/checkcode.jsp"/> 另外在web.xml中配置验证码类的加载: ...
Java实现RSA加密解密,数字证书生成与验证,模拟两个端通信,AB双方通信,客户端A把需要传输的文件MD5值用自己的私钥生成数字签名,连同明文用服务端B的公钥加密后传送给服务端B,服务端B用私钥解密验证数字签名,并计算...
java代码生成图形验证码,可以自定义验证字符个数、干扰线条数、图片大小、颜色,自定义图片验证的符号类型包括数字,字母等;
整理一下,自己做过的一个需求,滑块方块的验证,只是一个简单的工具类和技术文档,仅生成图片的工具类,没有前端交互,具体看需求实现。不喜勿喷。。。。