javajsp生成验证码判断(JAVA验证码生成)

本文目录一览:

jsp中,如何判断验证码正确?

这个功能通常一共3个页面:

index.jsp是用来登录用的,在其中显示验证码,即img src=”image.jsp”/

image.jsp是用来生成验证码的,有注释,很详细,如再不行,你复制到百度就有详解了。

result.jsp 是用来判断输入是否正确的。

相信你一定能看明白…别忘了采纳哦,谢谢。。。

【1.index.jsp】

%@ page language=”java” import=”java.util.*” pageEncoding=”GBK”%

htmlbody

form method=post action=”result.jsp”

input type=text name=input maxlength=4

img border=0 src=”image.jsp”

input type=”submit” value=”submit”

/form/body/html

【2.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);

}%

%

//设置页面不缓存

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 100; 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 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(“code”, sRand);

// 图象生效

g.dispose();

// 输出图象到页面

ImageIO.write(image, “JPEG”, response.getOutputStream());

%

【3.result.jsp】

%@ page language=”java” import=”java.util.*” pageEncoding=”GBK”%

htmlbody

%

String input=request.getParameter(“input”);

String code=(String)session.getAttribute(“code”);

if(input.equals(code)){

out.println(“验证成功!”);

}else{

out.println(“验证失败!”);

}

%

bodyhtml

在java页面上,用jsp,怎样写一个验证码

//验证码生成页面

%@ page language=”java” import=”java.util.*” pageEncoding=”GBK”%

%@ page import = ” java.awt.*,java.awt.image.*,javax.imageio.* ” %

%@ 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.setAttribute(“vcode” ,sRand);

g.dispose();

ImageIO.write(image, “jpg” ,os);

os.flush();

os.close();

os = null ;

response.flushBuffer();

out.clear();

out = pageContext.pushBody();

}

catch (IllegalStateException e)

{

System.out.println(e.getMessage());

e.printStackTrace();

} %

//验证码使用页面

%@ page language=”java” import=”java.util.*” pageEncoding=”gbk”%

%

String path = request.getContextPath();

String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;

%

!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”

html

head

base href=”%=basePath%”

titleMy JSP ‘index.jsp’ starting page/title

meta http-equiv=”pragma” content=”no-cache”

meta http-equiv=”cache-control” content=”no-cache”

meta http-equiv=”expires” content=”0″

meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″

meta http-equiv=”description” content=”This is my page”

!–

link rel=”stylesheet” type=”text/css” href=”styles.css”

script type=”text/javascript”

function refresh(){

var co=document.getElementById(“code”);

co.src=”vcode.jsp?vcode=”+Math.random();

}

/script

/head

body

用户名:input type=”text” name=”name”br/

img id=”code” title=”验证码” src=”vcode.jsp” a href=”javascript:refresh();”换一张/a

/body

/html

java中如何在同一个jsp页面中判断图片验证码与输入的是否一致

这个问题很简单的。我想你动态产生的验证码一定是一个单独的页面然后再把这个页面导入到你的输入信息的页面的。你打开你的动态生成验证码的页面。在里面你一定可以找到一个session.setAttribute(“”); 这个方法是把你验证码的值保存在session里面。根据你的意思在用js弹出来验证. 首先你在页面中加一小脚本% Stirng vcode= (String)session.getAttribute(“验证码Key”) %然后在你的提交按钮中加一个onClick事件… 请输入验证码:input type=”text” id=”txtvcode” name=”txtvcode” / input type=”button” name=”text” id=”text” value=”提交” onClick=”checkVcode(‘%= vcode%’)” /这样就可以把你动态生成的验证码值传入到js的函数中去了。 script function checkVcode(vcode){ var txtvcode= document.getElementById(“txtvcode”).value; if(vcode==txtvcode){ alert(“输入验证码正确”); }else{ alert(“输入验证码错误”); } } /script人在网吧。没工具调试。我想这些代码不会出问题的。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/244913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:05
下一篇 2024-12-12 13:05

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论