`
raulhjf
  • 浏览: 6283 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
最近访客 更多访客>>
社区版块
存档分类
最新评论

jsp实现图片验证码

    博客分类:
  • jsp
阅读更多
1、html页面:
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<html>
<head>
<title>登录页面</title>
<script language="javascript">
function loadimage(){
document.getElementById("randImage").src = "image.jsp?"+Math.random();
}
</script>
</head>
<body>

<form name="loginForm" action="login" method="post">
<table border="1" align="center">
<tr>
<td>验证码:</td>
<td><input type="text" name="checode" /> <img
alt="code..." name="randImage" id="randImage" src="image.jsp"></td>
</tr>
<tr>
<td colspan="2" align="center"><a href="javascript:loadimage();"><font
class=pt95>看不清点我</font></a></td>
</tr>
<tr>
<td colspan="2">
<center><input type="submit" value="登录" />&nbsp;&nbsp; <input
type="button" value="返回" onclick="location.href='/xkxt/index.jsp'" /></center>
</td>
</tr>
</table>
</form>
</body>
</html>
2、image.jsp
<%@ page contentType="image/jpeg" pageEncoding="gbk" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
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);
        }
%>
<%
//设置页面不缓存
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(new Color());
//g.drawRect(0,0,width-1,height-1);


// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
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);
}

// 取随机产生的认证码(4位数字)
//String rand = request.getParameter("rand");
//rand = rand.substring(0,rand.indexOf("."));
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();
%>
3、servlet中验证
String checode = request.getParameter("checode");
String rand = (String) request.getSession().getAttribute("rand");
if(checode.equals(rand)){
rd = request.getRequestDispatcher(success);
rd.forward(request, response);
} else {
PrintWriter out = response.getWriter();
out.println("<font size=4 color='red'>验证码不正确,请重新登录!</font>");
rd = request.getRequestDispatcher(failure);
rd.forward(request, response);
}
分享到:
评论

相关推荐

    JSP图形验证码项目

    **JSP图形验证码项目**是基于Java Web技术实现的一个安全登录功能模块,主要涉及的技术包括JSP(JavaServer Pages)和图形验证码。在这个项目中,我们重点探讨如何使用JSP来创建用户登录界面,并结合图形验证码来...

    利用jsp生成图片验证码

    总之,通过JSP生成图片验证码虽然可能不如使用Servlet直接控制HTTP响应那么灵活,但仍然可以实现。这种做法的好处是,可以在不离开JSP页面的情况下完成验证码的生成和输出,简化了开发流程。然而,考虑到性能和代码...

    JSP实现验证码数字图片

    **JSP实现验证码数字图片详解** 验证码是一种常用的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如批量注册、频繁提交等。在Web开发中,JSP(JavaServer Pages)可以用来创建动态验证码图片。本文将...

    Jsp图片验证码

    `JSP`(JavaServer Pages)是Java的一种动态网页技术,可以用来生成图片验证码。下面我们将详细探讨如何在JSP中创建图片验证码以及验证用户输入的验证码是否正确。 ### 1. 图片验证码的生成原理 图片验证码的基本...

    Jsp-图片验证码及刷新

    总的来说,Java的`java.awt`包提供了丰富的功能来创建和绘制图片,这使得我们可以方便地实现图片验证码的生成和刷新。结合HTTP协议和服务器端编程,我们可以构建出高效且安全的图片验证码系统,为网站提供有效的防护...

    JSP实现彩色验证码图片

    在JSP里面实现图片验证代码,用户用户登录或者注册

    jsp实现注册页面验证码验证代码

    * 使用 JSP 生成验证码图片,通过 BufferedImage 和 Graphics 实现验证码图片的生成。 * 将验证码存入 SESSION,以便后续验证。 2. 验证码刷新机制:使用 JavaScript 实现验证码刷新机制,刷新验证码图片。 * ...

    SSM实现登录验证码功能

    - 视图解析,可能是JSP或Thymeleaf等,用于展示登录页面和验证码图像。 - 相关的Service和DAO层,用于处理登录逻辑和数据库操作。 通过以上步骤和组件,SSM框架可以成功地实现登录验证码功能,为Web应用提供了一道...

    JSP代码实现验证码功能

    ### JSP代码实现验证码功能详解 #### 一、概述 本文档详细介绍了如何使用Java Server Pages (JSP)技术来实现一个简单的验证码功能。验证码在Web应用中是一种常见的安全措施,用于防止自动化软件进行恶意操作,如...

    采用ajax实现的图片验证码

    采用ajax技术实现的图形验证码,在前端进行验证。验证码信息为图片。每一行代码均有注释,通俗易懂。 实现步骤: 1、创建web工程 2、在jsp页面,编写一个请求servlet的名称"&gt; 3、编写一个servlet,在servlet中产生...

    jsp图片验证码

    jsp图片验证码 希望对大家有用 防止机器注册

    jsp验证码图片例子

    以上就是使用JSP生成验证码图片的基本原理和实现流程。在实际应用中,还可以结合其他安全措施,比如限制用户尝试次数、使用滑动验证等,进一步提高系统的安全性。同时,随着技术的发展,验证码的形式也在不断进化,...

    jsp随机验证码(图片)

    以下我们将深入探讨JSP实现随机验证码的技术细节。 ### 1. 验证码的基本原理 验证码的核心在于生成一组难以被机器自动识别的随机字符或数字,然后将它们显示为图像。用户在提交表单前需要正确输入这组字符,服务器...

    jsp生成图片验证码

    在Java Web开发中,JSP(JavaServer Pages)常被用来生成这种动态的图片验证码。下面我们将深入探讨如何使用JSP来创建一个简单的图片验证码。 首先,我们需要理解验证码的基本原理。验证码通常由一串随机生成的字母...

    jsp 登陆页面验证码的实现

    以上就是基于JSP和Servlet实现简单验证码的基本流程。实际应用中,为了增强安全性,还可以考虑以下几点: - 使用更复杂的图像扭曲算法,增加自动化识别的难度。 - 设置验证码过期时间,防止长时间未使用的验证码被...

    JSP实用教程之简易图片验证码的实现方法(附源码)

    总结起来,JSP实现图片验证码的过程主要包括以下几个步骤: 1. 前端创建包含验证码图片的表单。 2. `img.jsp`调用`captcha.jsp`生成验证码图片。 3. `captcha.jsp`中的`Captcha`类负责生成随机字符并绘制到图像上。...

    在jsp中实现验证码(用Myeclipse6.5开发)

    **在JSP中实现验证码详解** 验证码是一种常用的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如批量注册、频繁提交等。在Web开发中,尤其是在Java Web环境中,我们常常利用Java Servlet和JSP(Java...

    基于JSP的彩色验证码实现

    基于JSP的彩色验证码实现。需要注意的地方是验证码是为了安全才加的,所以把它做成图片的格式让别人难以破解。所以contentType="image/jpeg; charset=utf-8"而不是 contentType="text/html; charset=utf-8

    Jsp常用功能——图片验证码

    本文将深入解析JSP中实现图片验证码的主要技术和步骤。 首先,我们需要理解如何生成一张图片。在Java中,我们可以利用`java.awt`包下的类来实现这一目标。`HelloImage.java`示例代码展示了生成图片的基本流程: 1....

Global site tag (gtag.js) - Google Analytics