`

jsp开发中图片验证码的简单实现

    博客分类:
  • jsp
阅读更多
image.jsp
<%@ page contentType="image/jpeg" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*"  pageEncoding="gbk"%>
<%!
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);
}
%>
<%
out.clear();//这句针对resin服务器,如果是tomacat可以不要这句
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(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);
}

char c[] = new char[62];

for (int i = 97, j = 0; i < 123; i++, j++) {
c[j] = (char) i;
}
for (int o = 65, p = 26; o < 91; o++, p++) {
c[p] = (char) o;
}
for (int m = 48, n = 52; m < 58; m++, n++) {
c[n] = (char) m;
}        
String sRand="";
for (int i=0;i<4;i++){
int x = random.nextInt(62);
String rand=String.valueOf(c[x]);
sRand+=rand;

//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);
}

// 将认证码存入SESSION
session.setAttribute("rand",sRand);

g.dispose();

ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();
out = pageContext.pushBody(); 
%>



login.jsp
<%@ page language="java"  pageEncoding="gbk"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
		<title>用户登录</title>
		<script language="javascript">
  function loadimage(){
    document.getElementById("randImage").src = "image.jsp?"+Math.random();
  }
  </script>
	</head>

	<body>
		<form action="validate.jsp" method="post" name="loginForm">
			<table width="256" border="0" cellpadding="0" cellspacing="0">	
				<tr>
					<td width="118" height="22" valign="middle" align="center">
						<input type="text" name="rand" size="15">
					</td>
					<td width="138" valign="middle" align="center">
						<img alt="code..." name="randImage" id="randImage" src="image.jsp"
							width="60" height="20" border="1" >
					</td>
				</tr>
				<tr>
					<td height="36" colspan="2" align="center" valign="middle">
						<a href="javascript:loadimage();"><font class=pt95>看不清点我</font>
						</a>
						<input type=button value="test" onclick="alert('${sessionScope.rand}')"/>
					</td>
				</tr>
				<tr>
					<td height="36" colspan="2" align="center" valign="middle">
						<input type="submit" name="login" value="提交">
					</td>
				</tr>

			</table>
		</form>
	</body>
</html>


validate.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" pageEncoding="gbk" %>
<%
String rand = (String)session.getAttribute("rand");
String input = request.getParameter("rand");
if(rand.equals(input)){
 out.print("<script>alert('验证通过!');</script>");
} else{
 out.print("<script>alert('请输入正确的验证码!');location.href='login.jsp';</script>");
}
%>
分享到:
评论

相关推荐

    JSP开发之生成图片验证码技术的详解

    JSP开发之生成图片验证码技术的详解 我们在网页注册用户时,常常会需要格根据图片给的图片验证码把验证码输进去。那么我们今天就来学习这个。 简单来说分为三步骤: 1.底层用Java实现生成验证码图片 2.通过配置...

    JSP实用技巧集合,jsp编程的一些小技巧总结

    18. JSP中如何上传图片到数据库字段? 19. 页面自动刷新? 20. 表单自动提交? 21. 从JSP传数据的到JAVABEAN里? 22. weblogic 数据池连接? 数据源 JNDI名字 mysource 23. 三级下拉列表框联动菜单? 24. 在JSP中如何...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 ...

    jsp编程技巧集锦

    数字转中文 128 自动计算金额 129 JSP页面打印中使用WebBrowser控件 130 不刷新页面添加新的类别 131 鼠标滚动缩放图片 132 根据输入的表名生成输入数据表格 133 JSP表格输出到Excel 134.JSP...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 ...

    韩顺平sevlet,jsp视频教程知识点.txt

    视频描述: (一) 在同一jsp页面提交和接收数据 (二) eclipse(myeclipse)开发工具 1.0介绍 1.1安装 1.2配置 1.3使用 (三) model1模式 (四) 一个简单的用户登录系统 韩顺平 j2ee视频实战教程jsp第2讲(中集).wmv 视频...

    JspRun!社区论坛系统 v6.0 bulid 090424 GBK 安装版.rar

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    JspRun!社区论坛系统 v6.0 bulid 090423 GBK 源码版.rar

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 安装版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 源码版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    Java_Web开发实战1200例第1卷.part3

    13.6 简单的验证码应用 533 13.7 复杂的验证码应用 540 13.8 生成条形码 556 第14章 图像操作 559 14.1 图片的大小 560 14.2 图片与鼠标相关的操作 561 14.3 图片与时间相关的操作 580 14.4 图片的动画效果 589 14.5...

    Java_Web开发实战1200例第1卷.part2

    13.6 简单的验证码应用 533 13.7 复杂的验证码应用 540 13.8 生成条形码 556 第14章 图像操作 559 14.1 图片的大小 560 14.2 图片与鼠标相关的操作 561 14.3 图片与时间相关的操作 580 14.4 图片的动画效果 589 14.5...

    Java案例开发锦集

    案例1 用户登录验证的完整程序 案例2 MD5的Javabean实现 案例3 用公钥计算消息摘要的验证码 案例4-1 Java中的数字证书的生成及维护方法 案例4-2 数字证书的签发(签名) 案例4-3 利用数字证书给...

    JspRun!社区论坛系统 v6.0.0 build 20110516 GBK 安装版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    这是一个使用eclips开发的纯servlet的客户端加管理员后台的学员综合管理系统 (声明:该项目的客户端是仿的)

    客户端可以注销退出当前登录,并且清理掉对应的session值,登录成功后可以查看对应的选课信息,具体存在sns表中,不同的人课程不一样,图片也不一样,主要是将图片的src属性对应到一张表中来实现的 功能比较简单可以...

    JspRun!社区论坛系统 v6.0.0 build 20110516 UTF-8 源码版.zip

    系统采用struts、hibernate框架及中间件的结合既实现了业务逻辑与控制逻辑的有效分离,提高了层次结构的清晰度,提高了复用的粒度降低了开发代价和维护代价,同时保证了软件的质量使其更具有鲁棒性和可维护性。...

    java开源包5

    Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码图片。 Java 命令行解析...

    Java范例开发大全 (源程序)

     实例146 复制图片 219  实例147 随机读写Java类文件 221  第3篇 Java面向对象编程  第8章 面向对象(教学视频:72分钟) 226  8.1 类 226  实例148 简单的通讯录类 226  实例149 简单的长度单位转换类...

Global site tag (gtag.js) - Google Analytics