`

页面随机验证码的实现

    博客分类:
  • web
阅读更多

index.jsp:

<%@ page contentType="text/html;charset=utf-8"%>
<%@ page language="java" import="java.sql.*" errorPage=""%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
		<title>用户登录</title>
<!-- 此处需要引入JQuery的包-->
 <script type='text/javascript' src='js/jquery-latest.js'></script>
		<script language="javascript">
var murl="<%=request.getContextPath()%>/ValidateServlet";
alert(2);
function loadimage(){
	alert(1);
	document.getElementById("randImage").src = "image.jsp?"+Math.random();
}

//从ValidateServlet.java返回验证的结果是否正确
function check(){
	alert("check()");
	var num=document.getElementById("num").value;
	alert(num);
	$.post(murl,{num:num},function(data){
		alert(data);	
	});
}

</script>
	</head>
	<body>
		<table width="256" border="0" cellpadding="0" cellspacing="0">
			<!--DWLayoutTable-->
			<form name="loginForm">
				<tr>
					<td width="118" height="22" valign="middle" align="center">
						<input type="text" id="num" size="15">
					</td>
					<td width="138" valign="middle" align="center">
						<img name="randImage" id="randImage" src="image.jsp" width="60"
							height="20" border="1" align="absmiddle">
					</td>
				</tr>
				<tr>
					<td height="36" colspan="2" align="center" valign="middle">
						<a href="javascript:loadimage();"><font class=pt95>看不清点我</font>
						</a>
					</td>
				</tr>
				<tr>
					<td height="36" colspan="2" align="center" valign="middle">
						<input type="button" onclick="javascript:check()" name="login"
							value="提交">
					</td>
				</tr>
			</form>
		</table>
	</body>
</html>

 

image.jsp:

<%@ page contentType="image/jpeg"
	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 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", os);
os.flush();
os.close();
os=null;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
}catch(IllegalStateException e){
e.printStackTrace();
}
%> 

 

ValidateServlet.java:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class ValidateServlet extends HttpServlet {

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		HttpSession session=request.getSession();
		String rand = (String)session.getAttribute("rand");
                //得到用户输入的验证码
                String input = request.getParameter("num");
		if(rand.equals(input)){
		out.print("success");
		} else{
		out.print("error");
		}
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}

}
 

 

 

 

 

分享到:
评论

相关推荐

    登陆页面随机验证码

    在这个场景中,我们讨论的是一个用于登录页面的随机验证码,它增加了额外的线条来提高识别的难度。 验证码的设计有多种类型,包括图像验证码(如CAPTCHA)、音频验证码、滑动验证码、点击验证等。随机验证码是指...

    页面随机验证码生成

    在项目中,"页面登陆随机验证码"可能包含了JSP页面的HTML和JavaScript代码,用于显示和处理用户输入的验证码,以及后台的Java类,负责生成和验证验证码。学习这个项目,你可以了解如何在实际开发中结合前端和后端...

    C#随机验证码随机验证码随机验证码

    在C#编程语言中,实现一个随机验证码功能是相当常见的需求。下面将详细讨论如何在C#中创建随机验证码。 首先,我们需要理解验证码的基本组成部分。验证码通常由一组随机生成的字母、数字或者两者混合组成,有时会带...

    用asp.net生成随机验证码

    通过上述步骤,你可以在ASP.NET项目中实现一个基本的随机验证码功能。然而,随着技术的发展,现代验证码更倾向于使用更先进的技术,如谷歌的reCAPTCHA,提供更好的用户体验同时保持较高的安全性。

    web页面实现随机生成验证码的小列子

    1. **生成随机字符串**:验证码通常是4到6位的随机字母和数字组合。可以使用Java的`Random`类结合字符数组生成这个字符串。确保包含大小写字母和数字,以增加复杂性。 ```java import java.util.Random; public ...

    Java实现随机验证码功能实例

    验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交...本文介绍了使用servlet来实现随机验证码。

    JSP 随机验证码

    本话题将深入探讨如何使用Java Server Pages (JSP)来生成数字形式的随机验证码,并实现图片化显示及刷新功能。 首先,我们需要理解JSP的基本原理。JSP是一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码...

    在JSP页面中产生随机验证码

    在JSP(Java Server Pages)页面中生成随机验证码是一项常见的需求,主要应用于用户登录、注册等场景,以防止恶意的自动脚本或机器人操作。验证码的主要目的是增加安全性,通过要求用户输入图片上显示的一串随机字符...

    安卓验证码相关-随机图片验证码适合登录页面使用点击更换输入错误自动更换.rar

    本文将深入探讨"安卓验证码相关-随机图片验证码适合登录页面使用点击更换输入错误自动更换.rar"这个压缩包所包含的知识点。 首先,随机图片验证码是一种基于图像的验证方式,它的核心思想是生成一串随机字符,并将...

    jsp随机验证码生成测试

    总结来说,"jsp随机验证码生成测试"项目提供了一个学习验证码实现的实战平台,涵盖了JSP编程、图像处理、HTTP交互以及会话管理等多个IT技术点。通过对这个项目的实践,开发者可以更好地理解Web应用安全机制,为构建...

    asp.net 生成随机验证码

    在ASP.NET中,生成随机验证码是一项...总之,生成随机验证码是ASP.NET开发中的一个重要环节,涉及到字符串随机生成、图形处理和用户交互等多个方面。通过掌握这些技术,我们可以为Web应用程序提供更强大的安全保障。

    随机验证码(jsp和servlet两种方式),可刷新

    在这个项目中,Servlet用于生成随机验证码。Servlet生命周期包括初始化、服务、销毁三个阶段,其中在服务阶段,Servlet会根据HTTP请求生成一个唯一的、不可预测的字符串,然后将其存储在Session中。同时,Servlet会...

    登录时随机验证码.rar

    本示例中的“登录时随机验证码.rar”文件包含了一个简单的登录验证码实现,主要涉及到以下几个核心知识点: 1. **验证码生成**: 验证码通常由一组随机字符(包括字母、数字、特殊符号)组成,目的是让人类用户能...

    JavaScript实现页面动态验证码

    以下是一个简单的JavaScript验证码实现示例: ```javascript document.addEventListener('DOMContentLoaded', function() { var canvas = document.getElementById('captcha'); var ctx = canvas.getContext('2d'...

    验证码验证码验证码验证码验证码验证码

    在本主题中,我们将深入探讨如何使用JavaScript来创建随机验证码,以及动态时间在验证码实现中的作用。 首先,验证码通常包含一系列随机生成的字符,可以是字母、数字或者特殊符号的组合,用户需要输入这些字符以...

    JSP随机验证码实例源码

    在这个JSP随机验证码实例中,我们将深入探讨其工作原理、实现方法以及源码解析。 验证码的核心是生成一组随机的、难以被程序识别的字符或数字组合。在JSP(JavaServer Pages)环境中,我们可以利用Java的强大功能来...

    随机验证码

    在这个工具中,JSP页面负责生成并显示随机验证码。 验证码通常由一串随机字符组成,这些字符可能是数字、字母或其他符号,它们的组合使得人类可以轻易识别但机器难以解析。生成验证码的过程包括以下步骤: 1. **...

    asp.net生成随机验证码控件

    通过阅读和理解这些源代码,你可以更好地了解ASP.NET中生成随机验证码的具体实现细节,并且可以根据需求进行定制和优化。 总结来说,生成随机验证码是ASP.NET开发中的一项实用技能,涉及了字符串生成、图像处理、...

    jsp 登陆页面验证码的实现

    在网页开发中,验证码是一种常见的安全机制,用于防止恶意自动化的机器人或爬虫进行非法操作,比如批量注册、登录等。...通过这些步骤,我们可以实现一个基本的登录页面验证码功能,有效提高了系统安全性。

    java随机产生验证码

    本篇将详细介绍如何使用Java实现一个简单的随机验证码生成器。 首先,创建一个名为`RandomImage`的类,该类主要用于生成随机的验证码图像。类中定义了一个字符串`sRand`用于存储生成的验证码内容。 在`RandomImage...

Global site tag (gtag.js) - Google Analytics