java模拟登陆js动态生成的验证码怎么获取

JavaScript08

java模拟登陆js动态生成的验证码怎么获取,第1张

登录页面login.jsp示例代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

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%>">

<title>My JSP 'login.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">

-->

</head>

<%

String incode = (String)request.getParameter("code")

String rightcode = (String)session.getAttribute("rCode")

if(incode != null &&rightcode != null){

if(incode.equals(rightcode)){

out.println("验证码输入正确!")

}else{

out.println("验证码输入不正确,请重新输入!")

}

}

%>

<body>

<form action="login.jsp" method="post">

用户名:

<input type="text" name="username"/><br/>

密码:

<input type="password" name="password"/><br/>

验证码:

<img src="number.jsp"/>

<input type="text" name="code"/>

<input type="submit" value="登录"/>

</form>

</body>

</html>

验证码页面number.jsp代码:

<%@ page contentType="image/jpeg" language="java" import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" pageEncoding="utf-8"%>

<%!

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-catch")

response.setDateHeader("Expires",0)

//在内存中创建图象

int width = 60

int 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("Tines Nev Roman",Font.PLAIN,18))

//随机产生干扰线

g.setColor(getRandColor(160,200))

for(int i = 0i <255i++){

int x = random.nextInt(width)

int y = random.nextInt(height)

int xl = random.nextInt(12)

int yl = random.nextInt(12)

}

//随机产生认证码,4位数字

String sRand = ""

for(int i = 0i <4i++){

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("rCode",sRand)

//图像生效

g.dispose()

//输出图像到页面

ImageIO.write(image,"JPEG",response.getOutputStream())

out.clear()

out = pageContext.pushBody()

%>

用JavaScript实现验证码的验证主要代码如下:

var code //在全局定义验证码

//产生验证码

window.onload = function createCode(){

code = ""

var codeLength = 4//验证码的长度

var checkCode = document.getElementById("code")

var random = new Array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R',

'S','T','U','V','W','X','Y','Z')//随机数

for(var i = 0i <codeLengthi++) {//循环操作

var index = Math.floor(Math.random()*36)//取得随机数的索引(0~35)

code += random[index]//根据索引取得随机数加到code上

}

checkCode.value = code//把code值赋给验证码

}

//校验验证码

function validate(){

var inputCode = document.getElementById("input").value.toUpperCase()//取得输入的验证码并转化为大写

if(inputCode.length <= 0) { //若输入的验证码长度为0

alert("请输入验证码!")//则弹出请输入验证码

}

else if(inputCode != code ) { //若输入的验证码与产生的验证码不一致时

alert("验证码输入错误!@_@")//则弹出验证码输入错误

createCode()//刷新验证码

document.getElementById("input").value = ""//清空文本框

}

else { //输入正确时

alert("^-^")//弹出^-^

}

}