日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

彩色验证码实现

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 彩色验证码实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Image.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);
? }

%>
<%
//設置頁面不緩存
? response.setHeader("Pragma","No-cache");
? response.setHeader("Cache-Control","no-cache");
? response.setDateHeader("Expires",0);
? //在內存中創(chuàng)建圖像
? 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));
? //隨機產生155干擾線,使圖形中的認證碼不易被其他程序探測到
? g.setColor(getRandColor(160,200));
? for(int i=0;i<155;i++){
??? int x=random.nextInt(width);
??? int y=random.nextInt(height);
??? int x1=random.nextInt(12);
??? int y1=random.nextInt(12);
??? g.drawLine(x,y,x+x1,y+y1);
? }
? //取隨機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("rand",sRand);
? //圖像生成
? g.dispose();
? //輸出圖像到頁面
? ImageIO.write(image,"JPEG",response.getOutputStream());
%>


main.jsp

<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
認證碼輸入頁面
</title>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body bgcolor="#ffffff">
<form method="POST" action="check.jsp">
? <table>
??? <tr>
????? <td align="left">系統(tǒng)產生的認證碼:</td>
????? <td><img border="0" src="image.jsp" alt=""></td>
??? </tr>
??? <tr>
????? <td align="left">輸入上面的認證碼:</td>
????? <td><input type="text" name="rand" maxlength="4" value=""></td>
??? </tr>
??? <tr>
????? <td colspan="2" align="center"><input type="submit" value="提交檢測"></td>
??? </tr>? </table>
? </form>
</body>
</html>

check.jsp

<%@ page contentType="text/html; charset=GBK" import="java.util.*" errorPage="" %>
<html>
<head>
<title>
認證驗證碼頁面
</title>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body bgcolor="#ffffff">
<%
? String rand=(String)session.getAttribute("rand");
? String input=request.getParameter("rand");
%>
系統(tǒng)產生的認證碼為:<%=rand%><br>
您輸入的認證碼為:<%=input%><br><br>
? <%
??? if(rand.equals(input)){%>
????? <font color=green>輸入相同,認證成功!!!!</font>
?? <% }else{%>
?? <font color=red>輸入不同,認證失敗!!@@</font>
?? <%}%>
</body>
</html>

總結

以上是生活随笔為你收集整理的彩色验证码实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。