`
温柔一刀
  • 浏览: 857486 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

随机生成验证码

    博客分类:
  • java
阅读更多

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  >  


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());
 
%>  


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>  "  );
}

 
%>  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics