`

登录验证码实例,支持鼠标点击切换验证码

    博客分类:
  • java
阅读更多
1.首先是生产验证码的jsp页面:
<%@ page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="utf-8"%>
<%@ page import="java.io.OutputStream" %> 
<%!
	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);
}
%>

<%
	try{
		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);
		OutputStream os=response.getOutputStream();
		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(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);
		}
		String sRand="";
		for (int j=0;j<4;j++){
			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*j+6,16);
		}
		
		session.setAttribute("rand",sRand);
		
		
		g.dispose();
		
		ImageIO.write(image, "JPEG",os);
		os.flush();
		os.close();
		os=null;
		response.flushBuffer();
		out.clear();
		out = pageContext.pushBody();
	}
	catch(IllegalStateException e)
	{
		System.out.println(e.getMessage());
		e.printStackTrace();
	}
%>

2.登录页面的相关代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ include file="/pages/commons/taglibs.jsp"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    
    <title></title>
    	<script type="text/javascript">
		/**
		 * 换验证码图片
		 */
		 function change(img) {
		 	img.src = '${ctx}/pages/commons/image.jsp?seed=' + Math.random();
		 } 
	</script>
  </head>
  
  <body >
  验证码<img onclick="change(this)" border=0 src="${ctx}/pages/commons/image.jsp"></a>
</body>

</html>





分享到:
评论

相关推荐

    PHP生成图片验证码、点击切换实例

    7. 切换验证码实现:通过JavaScript的changing()函数实现点击“看不清?换一张”功能。通过在标签上设置onclick事件,用户点击图片时,会执行changing()函数。函数内部通过Math.random()生成一个随机数,拼接到图片...

    python+selenium+chrome 自动化测试TPshop商城项目实战(二)——通过cookies绕过验证码.pdf

    这个场景应用在TPshop商城项目的自动化测试中,目的是模拟用户登录后的操作流程,如商品搜索、选择商品、修改数量以及加入购物车等。 首先,我们导入必要的模块,包括`time`用于延时操作,`selenium`的`webdriver`...

    javascript网页特效实例大全(8-12)

    第8章 图形图像与多媒体 335 8.1 图片大小 336 实例215 打开自定义大小的图片 336 实例216 图片放大缩小 ...实例315 带验证码的登录页面 500 12.4 其他 501 实例316 使用Script Encoder加密工具加密 501

    JavaScript网页特效范例宝典源码

    实例105 随机产生指定位数的验证码 166 实例106 生成随机字符串 167 3.4 日期与时间 169 实例107 显示长日期格式的系统日期 169 实例108 实时显示系统时间 171 第4章 日期和时间 173 4.1 日期时间显示 174 实例109 ...

    QT实现注册登录,添加背景图片,界面跳转源码

    8. **事件处理**:在QT中,每个用户交互(如鼠标点击、键盘输入)都是一个事件,开发者需要编写对应的事件处理器来响应这些事件。例如,可以为登录按钮添加点击事件处理函数,实现登录验证。 9. **Qt Creator**:这...

    js代码 多种js效果 代码

    2. 事件处理:JS能监听和响应用户的交互,如点击、滚动、鼠标悬停等。`addEventListener`用于添加事件监听器。 二、常见效果 1. 动画效果:利用`setTimeout`或`setInterval`实现定时执行任务,创建平滑过渡、淡入...

    C#程序开发范例宝典(第2版).part13

    实例258 切换鼠标左右键 353 实例259 限制鼠标活动区域 354 实例260 获取鼠标在任意点的颜色值 355 实例261 设置鼠标样式 357 7.9 程序控制 359 实例262 打开控制面板中的程序 359 实例263 添加程序托盘 360 ...

    C#程序开发范例宝典(第2版).part08

    实例258 切换鼠标左右键 353 实例259 限制鼠标活动区域 354 实例260 获取鼠标在任意点的颜色值 355 实例261 设置鼠标样式 357 7.9 程序控制 359 实例262 打开控制面板中的程序 359 实例263 添加程序托盘 360 ...

    C#程序开发范例宝典(第2版).part02

    实例258 切换鼠标左右键 353 实例259 限制鼠标活动区域 354 实例260 获取鼠标在任意点的颜色值 355 实例261 设置鼠标样式 357 7.9 程序控制 359 实例262 打开控制面板中的程序 359 实例263 添加程序托盘 360 ...

    C#程序开发范例宝典(第2版).part12

    实例258 切换鼠标左右键 353 实例259 限制鼠标活动区域 354 实例260 获取鼠标在任意点的颜色值 355 实例261 设置鼠标样式 357 7.9 程序控制 359 实例262 打开控制面板中的程序 359 实例263 添加程序托盘 360 ...

Global site tag (gtag.js) - Google Analytics