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

首頁 > 編程 > JSP > 正文

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

2020-07-27 21:20:25
字體:
來源:轉載
供稿:網友

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文檔,將圖片加載到頁面來。

其次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>

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av一区在线观看| 国产亚洲精品美女久久久| 精品国产福利在线| 亚洲国产婷婷香蕉久久久久久| 国产精品美乳一区二区免费| 精品欧美激情精品一区| 国产精品一区二区久久| 欧美激情区在线播放| 国产成人午夜视频网址| 国产欧美日韩视频| 粉嫩av一区二区三区免费野| 欧美丰满片xxx777| 久久激情视频免费观看| 欧美怡春院一区二区三区| 欧美激情综合亚洲一二区| 国产精品一二三在线| 九九精品在线观看| 国产欧美日韩丝袜精品一区| 亚洲色图17p| 国产一区二区日韩| 国产综合在线视频| 成人国内精品久久久久一区| 亚洲精品www久久久| 亚洲最大福利视频网站| 正在播放国产一区| 国产精品久久77777| 欧美成人免费观看| 在线精品国产欧美| 亚洲毛茸茸少妇高潮呻吟| 亚洲午夜av久久乱码| 欧美放荡办公室videos4k| 欧美日韩亚洲成人| 国产精品视频网址| 久久久久久香蕉网| 亚洲毛片在线免费观看| 78m国产成人精品视频| 久久久久久久久久婷婷| 色偷偷偷综合中文字幕;dd| 国产日产欧美a一级在线| 亚洲自拍在线观看| 亚洲天堂av图片| 久久久久国产精品一区| 日韩资源在线观看| 亚洲国产成人av在线| 亚洲人成网站免费播放| 国产精品一区二区性色av| 最新国产精品亚洲| 欧美激情一区二区三区成人| 日韩欧美中文字幕在线播放| 成人午夜黄色影院| 亚洲精品乱码久久久久久金桔影视| 欧美在线精品免播放器视频| 4k岛国日韩精品**专区| 国产欧美日韩最新| 欧美在线视频一区二区| 日本精品久久久久久久| 日本亚洲欧洲色α| 国产精品激情av在线播放| 亚洲女在线观看| 中文字幕欧美日韩在线| 亚洲午夜久久久影院| 日韩视频免费在线观看| 日韩亚洲欧美中文在线| 久久精品国产亚洲一区二区| 中文字幕最新精品| 欧美一区二区.| 国产亚洲视频中文字幕视频| 国产成人精品亚洲精品| 欧美精品videosex牲欧美| 黄色一区二区三区| 国产精品美女999| 全亚洲最色的网站在线观看| 亚洲欧美国产一本综合首页| 欧美日韩国产精品一区二区不卡中文| 2021久久精品国产99国产精品| 免费av一区二区| 欧美在线激情网| 午夜精品久久久久久久男人的天堂| 久久久国产一区| 国产91在线播放精品91| 九九热精品视频在线播放| 日韩中文字幕亚洲| 亚洲精品第一国产综合精品| 亚洲乱码国产乱码精品精| 成人国产精品一区二区| 亚洲精品视频免费| 国产精品69精品一区二区三区| 亚洲欧美成人在线| 国产91成人在在线播放| 亚洲乱亚洲乱妇无码| 日本免费在线精品| 久久精品视频在线| 欧美一级淫片aaaaaaa视频| 日韩精品极品视频| 国产免费一区二区三区在线能观看| 97精品欧美一区二区三区| 中文精品99久久国产香蕉| 欧美视频裸体精品| 丝袜美腿亚洲一区二区| 欧美成人合集magnet| 庆余年2免费日韩剧观看大牛| zzijzzij亚洲日本成熟少妇| 成人欧美一区二区三区黑人| 日韩中文字幕在线视频播放| 久久精品视频网站| 国产精品久久久久久久久久尿| 欧美夫妻性生活视频| 国产亚洲欧美aaaa| 国产精品女视频| 久久久成人精品视频| 国产精品久久久久久久午夜| 亚洲国产欧美自拍| 91久久夜色精品国产网站| 亚洲aⅴ男人的天堂在线观看| 亚洲日本欧美中文幕| 福利微拍一区二区| 亚洲字幕一区二区| 久久久久久成人精品| 91成人在线视频| 久久视频这里只有精品| 久久91亚洲人成电影网站| 日韩精品在线免费观看视频| 国产视频久久久久久久| 91精品国产乱码久久久久久蜜臀| 精品丝袜一区二区三区| 中国人与牲禽动交精品| 成人国产在线视频| 久久成人综合视频| 色av中文字幕一区| 欧美xxxx综合视频| 尤物九九久久国产精品的分类| 亚洲欧美国产高清va在线播| 亚洲网址你懂得| 中文字幕免费精品一区| 亚洲国产精品网站| 91成品人片a无限观看| 国产亚洲精品久久久久久牛牛| 日本欧美中文字幕| 欧美丝袜美女中出在线| 亚洲国产成人在线播放| 亚洲一区二区中文字幕| 91亚洲永久免费精品| 5566成人精品视频免费| 青青久久av北条麻妃海外网| 亚洲精品免费网站| 成人做爰www免费看视频网站| 青青a在线精品免费观看| 久久久国产一区| 中文字幕亚洲综合久久筱田步美| 久久精品视频网站| 97av在线播放| 中文国产亚洲喷潮| 亚洲www永久成人夜色| 久久综合免费视频影院| 国产精品www色诱视频| 国产99视频在线观看| 国产精品美女久久| 国产精品一久久香蕉国产线看观看| 国产一区香蕉久久| 国语自产精品视频在线看抢先版图片| 久久人人97超碰精品888| 成人久久一区二区| 亚洲欧美三级伦理| 亚洲国产成人一区|