随机生成验证码 博客分类: java JSPJavaScriptCacheHTML
程序员文章站
2024-03-18 19:16:52
...
login.jsp--------------------登录页面,在这里我是提供输入验证码然后提交进行验证
代码如下:
<!----> <% @ page contentType = " text/html; charset=gb2312 " %>
< html >
< head >
< meta http - equiv = " Content-Type " content = " text/html; charset=gb2312 " >
< title > 用户登录 </ title >
< script language = " javascript " >
function loadimage() {
document.getElementById( " randImage " ).src = " image.jsp? " + Math.random();
}
</ script >
</ head >
< body >
< table width = " 256 " border = " 0 " cellpadding = " 0 " cellspacing = " 0 " >
<!-- DWLayoutTable -->
< form action = " validate.jsp " method = " post " name = " loginForm " >
< tr >
< td width = " 118 " height = " 22 " valign = " middle " align = " center " >< input type = " text " name = " rand " size = " 15 " ></ td >
< td width = " 138 " valign = " middle " align = " center " >< img alt = " code " 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 = " submit " name = " login " value = " 提交 " ></ td >
</ tr >
</ form >
</ table >
</ body >
</ html >
< html >
< head >
< meta http - equiv = " Content-Type " content = " text/html; charset=gb2312 " >
< title > 用户登录 </ title >
< script language = " javascript " >
function loadimage() {
document.getElementById( " randImage " ).src = " image.jsp? " + Math.random();
}
</ script >
</ head >
< body >
< table width = " 256 " border = " 0 " cellpadding = " 0 " cellspacing = " 0 " >
<!-- DWLayoutTable -->
< form action = " validate.jsp " method = " post " name = " loginForm " >
< tr >
< td width = " 118 " height = " 22 " valign = " middle " align = " center " >< input type = " text " name = " rand " size = " 15 " ></ td >
< td width = " 138 " valign = " middle " align = " center " >< img alt = " code " 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 = " submit " name = " login " value = " 提交 " ></ td >
</ tr >
</ form >
</ table >
</ body >
</ html >
image.jsp-------------------生成随即验证码图片的jsp页面
代码如下:
<% @ page contentType = " image/jpeg " 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);
}
%>
<%
out.clear(); // 这句针对resin服务器,如果是tomacat可以不要这句
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(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 " , response.getOutputStream());
%>
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);
}
%>
<%
out.clear(); // 这句针对resin服务器,如果是tomacat可以不要这句
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(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 " , response.getOutputStream());
%>
validate.jsp-------------用来验证输入的验证码是否正确
代码如下:
<% @ page contentType = " text/html; charset=gb2312 " %>
<%
String rand = ( String )session.getAttribute( " rand " );
String input = request.getParameter( " rand " );
if (rand.equals(input)) {
out.print( " <script>alert('验证通过!');</script> " );
} else {
out.print( " <script>alert('请输入正确的验证码!');location.href='login.jsp';</script> " );
}
%>
<%
String rand = ( String )session.getAttribute( " rand " );
String input = request.getParameter( " rand " );
if (rand.equals(input)) {
out.print( " <script>alert('验证通过!');</script> " );
} else {
out.print( " <script>alert('请输入正确的验证码!');location.href='login.jsp';</script> " );
}
%>
推荐阅读
-
随机生成验证码 博客分类: java JSPJavaScriptCacheHTML
-
验证码机制实现 博客分类: java ServletSwingJavaScriptSUN工作
-
用 wsimport 命令生成webservice客户端代码 博客分类: java wsimportwebservice客户端代码wsdl命令
-
(转)随机数生成函数面试题 博客分类: 算法题 随机数生成
-
由wsdl生成的java vo类不适合做普通java vo 博客分类: CXF/WebService wsdlwebservicerpcwsdl to java classvo
-
将类文件打包生成jar文件 博客分类: java
-
poi之控制台生成xls 博客分类: java JavaJ#Apache
-
将类文件打包生成jar文件 博客分类: java
-
poi之控制台生成xls 博客分类: java JavaJ#Apache
-
JdbcTemplate进行in查询随机数量参数的SQL简单拼写 博客分类: java;