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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

随机验证码实现案例

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 随机验证码实现案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

眾所周知,驗證碼在我們的生活中都是非常常見的,很多公司都在各種折騰各種各樣的驗證碼,這里簡要的用一個小案例來實現驗證碼的功能(ps:其實我挺討厭驗證碼這個東西的)。

? ?建立一個javaweb工程,新建login.html,在里面主要是寫界面,代碼實現如下,寫在body區就可以了,來一個表單驗證

<body><form action="">username:<input/><br/>password:<input/><br/>驗證碼:<input name="code"/><img id="image1" src="/day08_response/servlet/responseDemo4"/><input type="button" value="看不清,換一張" οnclick="change()"/><br/><input type="submit" value="登陸"/></form><script type="text/javascript">function change(){var imageObj = document.getElementById("image1");//地址一樣,瀏覽器不會發出請求imageObj.src="/day08_response/servlet/responseDemo4?time="+new Date().getTime();}</script></body>

然后我們需要新建一個servlet類,實現驗證碼我們可以有兩種方式,一種是自己寫,如下:顏色可以直接配置就好,好吧,鑒于我的審美觀有限,貌似這種顏色搭配起來挺丑的。

private void test1(HttpServletResponse response) throws IOException {int width=110;int height=25;//1構建一幅內存圖片BufferedImageBufferedImage bi=new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);//3.圖片上的畫筆Graphics g=bi.getGraphics();g.setColor(Color.green);g.drawRect(0, 0, width, height); //畫矩形邊線//4填充背景色g.setColor(Color.gray);g.fillRect(1, 1, width, height);//5干擾線g.setColor(Color.yellow);Random r=new Random();for(int i=0;i<20;i++)g.drawLine(r.nextInt(width), r.nextInt(height),r.nextInt(width), r.nextInt(height));//6數字驗證碼g.setColor(Color.BLACK);g.setFont(new Font("宋體",Font.BOLD|Font.ITALIC,13));//加粗傾斜int x=20;for(int i=0;i<4;i++){g.drawString(r.nextInt(10)+"",x,20);x+=20;} //2輸出響應對象的字節流輸出流ImageIO.write(bi, "jpg", response.getOutputStream());}
還有一種方法可以使用,開源框架validate.jar,導入這個jar包,兩行代碼就可以搞定,當然了,如果你想要更好的效果,你可以自己寫或者看里面的.class中的源碼,自己進行修改,這里就不在多廢話了。

//開源框架實現ValidateCode vc=new ValidateCode(110, 25, 4, 30);//第一個參數是寬,第二個是高,第三個是驗證碼的數目,第四個是干擾線的條數vc.write(response.getOutputStream());
最后,我們還需要清除一下瀏覽器的緩存,我們都知道,清除緩存當然是用那三種方法啦。

//清除緩存response.setIntHeader("Expires", -1);response.setHeader("Cache-Control", "no-cache");response.setHeader("Pragma", "no-cache");
哦?你還不滿意,好吧,那我們再加一個定時刷新的功能吧!

第一種刷新方式是直接刷新:

private void test1(HttpServletResponse response) throws IOException {response.setIntHeader("Refresh", 1);//單位是秒Random r = new Random();response.getWriter().write(r.nextInt()+"");}當然,我們還可以來那種倒計時幾秒鐘就跳轉到其他頁面的這種效果,

//刷新到別處private void test2(HttpServletResponse response) throws IOException {response.setContentType("text/html;charset=UTF-8");response.getWriter().write("注冊成功!2秒后自動轉向登陸頁面。");response.setHeader("Refresh", "2;URL=/day08_response/login.html");//單位是秒}下面再來說一下控制瀏覽器緩存時間的實現方法:

response.setDateHeader("Expires", System.currentTimeMillis()+1*60*60*1000);//取值是一個毫秒值。如果該值小于當前時間,則不緩存。//如果大于當前時間,緩存的時間是:值-當前時間。response.getWriter().write("hello");
好吧,基本上說完了,將以上知識整個起來就可以實現你的一個項目的功能了,快去試試吧!

轉載于:https://www.cnblogs.com/sdksdk0/p/5585071.html

總結

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

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