亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP開發之生成圖片驗證碼技術的詳解

2024-09-05 00:23:23
字體:
來源:轉載
供稿:網友

JSP開發之生成圖片驗證碼技術的詳解

我們在網頁注冊用戶時,常常會需要格根據圖片給的圖片驗證碼把驗證碼輸進去。那么我們今天就來學習這個。

簡單來說分為三步驟:

1.底層用Java實現生成驗證碼圖片
2.通過配置文件調用實現Java生成片
3.通過HTML技術把圖片顯示到網頁

首先是最底層Java生成圖片代碼

package cn.hncu.servlets;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.FileOutputStream;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CodeImgServlet extends HttpServlet {  @Override  protected void service(HttpServletRequest req, HttpServletResponse resp)      throws ServletException, IOException {    //☆1☆--相比純java方式有變化的地方    resp.setContentType("image/jpeg");//設置http響應頭---告訴瀏覽器我現在發的是這個圖片格式的數據,你用相應的方式來解析    //定義圖片的寬和高    int w=60;    int h=30;    //聲明一個RGB格式的內存中的圖片    BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);    Graphics g = img.getGraphics();    //把背景變白色    g.setColor(Color.white);    g.fillRect(0, 0, w, h);    //設置字體    g.setFont(new Font("aa",Font.BOLD,18));    //產生并draw出4個隨機數字    Random r = new Random();    for(int i=0;i<4;i++){      int a = r.nextInt(10);//生成0~9之間的隨機整數      int y = 15+r.nextInt(20);//產生隨機的垂直位置      //產生隨機顏色      Color c = new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256));      g.setColor(c);      g.drawString(""+a, i*15, y);    }    //畫幾條干擾線    for(int i=0;i<10;i++){      //產生隨機顏色      Color c = new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256));      g.setColor(c);      g.drawLine(r.nextInt(60), r.nextInt(30), r.nextInt(60), r.nextInt(30));    }    g.dispose();//類似于IO中的flush(),把圖形數據刷到img中    //把內存圖片img對象保存到一個jpg文件    ImageIO.write(img, "JPEG", resp.getOutputStream() );//☆2☆  }}

項目中的Web.xml配置文件代碼

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"   xmlns="http://java.sun.com/xml/ns/javaee"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name>  <!-- 安全目錄中的jsp文件如果要允許外面訪問,得在web.xml進行配置,配置成一個jsp-servlet --> <servlet>  <servlet-name>ajsp</servlet-name>  <!-- 配置servlet用servlet-class, 配置jsp頁面用jsp-file標簽 -->  <jsp-file>/WEB-INF/jsps/a.jsp</jsp-file> </servlet> <!--   <servlet>  <servlet-name>CodeImgServlet</servlet-name>  <servlet-class>cn.hncu.servlets.CodeImgServlet</servlet-class>  </servlet>  <servlet>  <servlet-name>LoginServlet</servlet-name>  <servlet-class>cn.hncu.servlets.LoginServlet</servlet-class>  </servlet>  -->   <servlet>    <servlet-name>CodeImgServlet</servlet-name>    <servlet-class>cn.hncu.servlets.CodeImgServlet</servlet-class>   </servlet>   <servlet>    <servlet-name>LoginServlet</servlet-name>    <servlet-class>cn.hncu.servlets.LoginServlet</servlet-class>   </servlet> <!-- 給servlet配置訪問路徑 --> <servlet-mapping>  <servlet-name>ajsp</servlet-name>  <url-pattern>/x/a.asp</url-pattern> </servlet-mapping> <servlet-mapping>  <servlet-name>CodeImgServlet</servlet-name>  <url-pattern>/code</url-pattern> </servlet-mapping> <servlet-mapping>  <servlet-name>LoginServlet</servlet-name>  <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> <welcome-file-list>  <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>

主頁面代碼登錄代碼

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <script type="text/javascript">   function changeImg(){     var img = document.getElementById("codeImg");     // 當src每次的路徑方式變化時,就會去重新請求一次后臺。     img.src="code?"+new Date().getTime();   } </script> </head> <body>  <h2>用戶注冊</h2>   <form action="LoginServlet" method="post">      姓名:<input type="text" name="name"><br/>      密碼:<input type="password" name="pwd"><br/>    <!--      驗證碼:<input type="text" name="code"/><img src="imgs/a.jpg"/><br/>     -->      驗證碼:<input type="text" name="code"/><img id="codeImg" src="code"/><a href="javascript:changeImg();" rel="external nofollow" >看不清</a><br/>     <input type="submit" value="注冊">   </form>   <br/><br/>   <hr/>   <a href="WEB-INF/jsps/a.jsp" rel="external nofollow" >WA---a.jsp</a> <br/>   <a href="/helloWebProj/x/a.asp" rel="external nofollow" >AC---a.jsp</a> <br/> </body></html>

當頁面加載,就向TOMCAT請求服務,調用前面的JAVA類,生成圖片,再通過HTML文檔,將圖片加載到頁面來。

JSP,生成,圖片驗證碼,java生成圖片驗證碼的實例

其次Web.xml配置文件還可以用來設置訪問安全目錄文件(WEB-INF)

 <servlet>     <servlet-name>ajsp</servlet-name>    <!-- 配置servlet用servlet-class, 配置jsp頁面用jsp-file標簽 -->     <jsp-file>/WEB-INF/jsps/a.jsp</jsp-file>   </servlet>     <servlet>    <servlet-name>CodeImgServlet</servlet-name>    <servlet-class>cn.hncu.servlets.CodeImgServlet</servlet-class>   </servlet>   <servlet>    <servlet-name>LoginServlet</servlet-name>    <servlet-class>cn.hncu.servlets.LoginServlet</servlet-class>   </servlet> <!-- 給servlet配置訪問路徑 --> <servlet-mapping>  <servlet-name>ajsp</servlet-name>  <url-pattern>/x/a.asp</url-pattern> </servlet-mapping> <servlet-mapping>  <servlet-name>CodeImgServlet</servlet-name>  <url-pattern>/code</url-pattern> </servlet-mapping> <servlet-mapping>  <servlet-name>LoginServlet</servlet-name>  <url-pattern>/LoginServlet</url-pattern> </servlet-mapping>

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望通過本文能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产91在线视频| 亚洲免费小视频| 欧美激情久久久久久| 黑人极品videos精品欧美裸| 中文字幕日韩在线播放| 国产欧美日韩精品丝袜高跟鞋| 亚洲第一中文字幕| 青青在线视频一区二区三区| 成人有码视频在线播放| 亚洲欧美在线x视频| 日韩美女写真福利在线观看| 毛片精品免费在线观看| 欧美黑人xxxⅹ高潮交| 亚洲视频在线免费观看| 亚洲欧美激情一区| 欧美精品少妇videofree| 亚洲风情亚aⅴ在线发布| 久久精品2019中文字幕| 国产精品海角社区在线观看| 91亚洲精品视频| 国产精品www网站| 91av在线国产| 久久影视电视剧免费网站| 国产日韩视频在线观看| 欧洲精品久久久| 久久久爽爽爽美女图片| 欧美日韩午夜剧场| 92福利视频午夜1000合集在线观看| 成人网欧美在线视频| 久久久久久久爱| 亚洲一二在线观看| 日韩亚洲欧美中文在线| 亚洲男人天堂九九视频| 久久久国产精品一区| 精品国产91久久久| 亚洲欧美在线一区二区| 亚洲伊人一本大道中文字幕| 国产一区二区三区精品久久久| 亚洲a中文字幕| 中文字幕av一区| 欧美电影免费观看电视剧大全| 国产精品免费小视频| 久久精品国产电影| 欧美壮男野外gaytube| 亚洲四色影视在线观看| 成人免费视频网址| 日本成人在线视频网址| 91精品视频在线免费观看| 亚洲精品国产精品自产a区红杏吧| 久久亚洲精品小早川怜子66| 亚洲精品大尺度| 亚洲午夜女主播在线直播| 亚洲欧美激情另类校园| 精品美女永久免费视频| 亚洲精品视频在线播放| 狠狠色狠狠色综合日日五| 日本免费一区二区三区视频观看| 国产精品99久久久久久www| 欧美日韩性视频| 日韩欧美在线看| 亚洲精品欧美一区二区三区| 国产精品亚洲激情| 亚洲男人天堂古典| 69av成年福利视频| 亚洲偷欧美偷国内偷| 亚洲国产欧美自拍| 欧美有码在线观看视频| 精品视频—区二区三区免费| 亚洲精品国产综合久久| 精品福利在线看| 国产午夜精品视频免费不卡69堂| 日本欧美在线视频| 亚洲91av视频| 欧美大片大片在线播放| 中文字幕亚洲一区二区三区五十路| 久久视频这里只有精品| 国产色视频一区| 日韩乱码在线视频| 91精品久久久久久久久久另类| 日本韩国欧美精品大片卡二| 色偷偷88888欧美精品久久久| 亚洲成人久久久| 97精品国产97久久久久久春色| 欧美在线视频观看免费网站| 欧美激情中文字幕乱码免费| 欧美日韩一区二区免费视频| 国产成人精品视| 久久偷看各类女兵18女厕嘘嘘| 亚洲第一黄色网| 国产精品稀缺呦系列在线| 日韩高清有码在线| 日韩国产在线看| 九九九热精品免费视频观看网站| 欧美成人午夜免费视在线看片| 亚洲日韩中文字幕在线播放| 日韩在线视频二区| 91久久精品视频| 亚洲欧美在线磁力| 久久久久久有精品国产| 中文字幕日韩在线播放| 欧美高清在线播放| 91免费人成网站在线观看18| 亚洲欧美制服丝袜| 国产精品永久在线| 国产精品av免费在线观看| 成人高h视频在线| 亚洲黄色片网站| 一区二区三区动漫| 亚洲国产小视频在线观看| 91精品视频免费观看| 大桥未久av一区二区三区| 亚洲第一福利网| 激情亚洲一区二区三区四区| 亚洲激情 国产| 国产日本欧美一区| 91视频免费网站| 欧美精品日韩www.p站| 久久亚洲一区二区三区四区五区高| 欧美日韩一二三四五区| 免费不卡在线观看av| 成人精品网站在线观看| 欧亚精品在线观看| 亚洲欧美综合另类中字| 成人激情免费在线| 午夜精品久久久久久久99热浪潮| 亚洲最新在线视频| 中文字幕av日韩| 久久成人亚洲精品| 海角国产乱辈乱精品视频| 色噜噜久久综合伊人一本| 午夜精品久久久99热福利| 青青久久av北条麻妃黑人| 久久中国妇女中文字幕| 欧美黑人国产人伦爽爽爽| 伊人一区二区三区久久精品| 中文字幕亚洲欧美日韩高清| 北条麻妃一区二区三区中文字幕| 国产成+人+综合+亚洲欧美丁香花| 久久久成人av| 日本aⅴ大伊香蕉精品视频| 精品视频—区二区三区免费| 国产成人福利夜色影视| 精品国产欧美成人夜夜嗨| 国产精品成人aaaaa网站| 欧美日韩国产成人高清视频| 992tv在线成人免费观看| 国产精品久久久久久久久影视| 久久亚洲精品网站| 日韩免费av一区二区| 成人免费视频xnxx.com| 国产精品久久久久福利| 国产精品久久久久久中文字| 国产成人一区二区在线| 中文字幕欧美日韩va免费视频| 欧美成人黑人xx视频免费观看| 亚洲精品一区二区久| 日韩在线不卡视频| 亚洲精品动漫久久久久| 欧美精品在线免费观看| 日韩免费在线观看视频| 91在线精品播放| 日韩成人久久久| 亚洲成人网av| 精品国产一区二区三区四区在线观看|