`

页面随机验证码的实现

    博客分类:
  • 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'...

    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