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

首頁 > 學院 > 開發設計 > 正文

java生成驗證碼

2019-11-14 15:32:39
字體:
來源:轉載
供稿:網友

都是基礎知識,就不說廢話了,直接上例子.

大家都能看懂的.

package com.gys;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.Httpsession;public class MakeCode {    PRivate Random random = new Random();    private String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//隨機產生的字符串        private int width = 80;//圖片寬    private int height = 26;//圖片高    private int lineSize = 40;//干擾線數量    private int stringNum = 4;//隨機產生字符數量    /*     * 獲得字體     */    private Font getFont(){        return new Font("Fixedsys",Font.CENTER_BASELINE,18);    }    /*     * 獲得顏色     */    private Color getRandColor(int fc,int bc){        if(fc > 255)            fc = 255;        if(bc > 255)            bc = 255;        int r = fc + random.nextInt(bc-fc-16);        int g = fc + random.nextInt(bc-fc-14);        int b = fc + random.nextInt(bc-fc-18);        return new Color(r,g,b);    }    /**     * 生成隨機圖片     */    public void getRandcode(HttpServletRequest request,            HttpServletResponse response) {        HttpSession session = request.getSession();        //BufferedImage類是具有緩沖區的Image類,Image類是用于描述圖像信息的類        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);        Graphics g = image.getGraphics();//產生Image對象的Graphics對象,該對象可以在圖像上進行各種繪制操作        g.fillRect(0, 0, width, height);        g.setFont(new Font("Times New Roman",Font.ROMAN_BASELINE,18));        g.setColor(getRandColor(110, 133));        //繪制干擾線        for(int i=0;i<=lineSize;i++){            drowLine(g);        }        //繪制隨機字符        String randomString = "";        for(int i=1;i<=stringNum;i++){            randomString=drowString(g,randomString,i);        }        session.removeAttribute("code");        session.setAttribute("code", randomString);        System.out.println(randomString);        g.dispose();        try {            ImageIO.write(image, "JPEG", response.getOutputStream());//將內存中的圖片通過流動形式輸出到客戶端        } catch (Exception e) {            e.printStackTrace();        }    }    /*     * 繪制字符串     */    private String drowString(Graphics g,String randomString,int i){        g.setFont(getFont());        g.setColor(new Color(random.nextInt(101),random.nextInt(111),random.nextInt(121)));        String rand = String.valueOf(getRandomString(random.nextInt(randString.length())));        randomString +=rand;        g.translate(random.nextInt(3), random.nextInt(3));        g.drawString(rand, 13*i, 16);        return randomString;    }    /*     * 繪制干擾線     */    private void drowLine(Graphics g){        int x = random.nextInt(width);        int y = random.nextInt(height);        int xl = random.nextInt(13);        int yl = random.nextInt(15);        g.drawLine(x, y, x+xl, y+yl);    }    /*     * 獲取隨機的字符     */    public String getRandomString(int num){        return String.valueOf(randString.charAt(num));    }}
package com.gys;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class GetCodeServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("image/jpeg");//設置相應類型,告訴瀏覽器輸出的內容為圖片        response.setHeader("Pragma", "No-cache");//設置響應頭信息,告訴瀏覽器不要緩存此內容        response.setHeader("Cache-Control", "no-cache");        response.setDateHeader("Expire", 0);        MakeCode makeCode = new MakeCode();        try {            makeCode.getRandcode(request, response);//輸出圖片方法        } catch (Exception e) {            e.printStackTrace();        }    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doGet(request, response);    }}
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee                                                    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    <servlet>        <servlet-name>GetCodeServlet</servlet-name>        <servlet-class>com.gys.GetCodeServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>GetCodeServlet</servlet-name>        <url-pattern>/getCode</url-pattern>    </servlet-mapping>        <welcome-file-list>        <welcome-file>index.jsp</welcome-file>    </welcome-file-list></web-app>

index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>驗證碼</title>     <script type="text/Javascript">        function getCode(obj) {            obj.src = "getCode?"+Math.random();//防止出現緩存        }    </script>  </head>    <body>        <img title="點擊更換" onclick="getCode(this);" src="getCode"><br/>  </body></html>

跑起來:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91chinesevideo永久地址| 8050国产精品久久久久久| 欧日韩不卡在线视频| 成人激情在线播放| 欧美激情视频网站| 在线视频亚洲欧美| 亚洲变态欧美另类捆绑| 一本一本久久a久久精品综合小说| 成人精品视频久久久久| 久久九九国产精品怡红院| 亚洲欧美一区二区激情| 欧美在线日韩在线| 日韩高清电影好看的电视剧电影| 欧美精品一本久久男人的天堂| 欧美成人三级视频网站| 国产精品美女在线| 欧美激情18p| 欧美日韩亚洲网| 国产精品久久婷婷六月丁香| 欧美性猛交xxxx乱大交极品| 国产成人91久久精品| 亚洲电影免费观看高清完整版在线观看| 亚洲女人被黑人巨大进入al| 久久精品视频播放| 欧美激情中文字幕乱码免费| 国产这里只有精品| 国产精品久久国产精品99gif| 亚洲精品国精品久久99热| 欧美成人精品h版在线观看| 国产精品青青在线观看爽香蕉| 色综合色综合网色综合| 4438全国亚洲精品在线观看视频| 国产精品96久久久久久又黄又硬| 精品女同一区二区三区在线播放| 成人免费视频xnxx.com| 欧美一二三视频| 57pao国产精品一区| 久久久久久久久亚洲| 成人黄色av免费在线观看| 爽爽爽爽爽爽爽成人免费观看| 成人在线小视频| 国产成人涩涩涩视频在线观看| 国产亚洲一区二区在线| 国产久一一精品| 欧美视频二区36p| 久久精品久久久久久| 51久久精品夜色国产麻豆| 国产精品视频免费观看www| 欧美www在线| 欧美午夜宅男影院在线观看| 精品成人久久av| 午夜精品www| 91视频88av| 亚洲国产又黄又爽女人高潮的| 97在线视频免费| 欧美日韩裸体免费视频| 成人激情视频小说免费下载| 国产精品夫妻激情| 成人动漫网站在线观看| 亚洲最大av在线| 曰本色欧美视频在线| 精品久久久免费| 精品国产自在精品国产浪潮| 亚洲激情电影中文字幕| 97国产精品视频| 日韩精品有码在线观看| 日韩高清欧美高清| 亚洲男人7777| 国产97在线播放| 国产精品99久久久久久www| 日韩av一区二区在线| 欧美一级高清免费| 亚洲人成电影网站色www| 欧美激情免费看| 在线精品91av| 日韩大陆毛片av| 日韩精品免费在线视频| 51ⅴ精品国产91久久久久久| 亚洲全黄一级网站| 中文字幕亚洲无线码a| www.国产精品一二区| 日韩大陆欧美高清视频区| 精品久久香蕉国产线看观看亚洲| 日本欧美在线视频| 国产欧美va欧美va香蕉在| 国产精品久久久久久亚洲调教| 欧美性猛交xxxx偷拍洗澡| 亚洲精品videossex少妇| 国产精品一区二区三区久久| 九九精品在线播放| 精品动漫一区二区三区| 日韩精品视频免费专区在线播放| 久久久97精品| 亚洲精品电影在线观看| 亚洲国产精彩中文乱码av| 国产成人啪精品视频免费网| 亚洲激情电影中文字幕| 亚洲高清久久久久久| 国产精品伦子伦免费视频| 午夜剧场成人观在线视频免费观看| 中文字幕亚洲天堂| 精品成人久久av| 欧美午夜性色大片在线观看| 成人综合网网址| 欧美极品美女电影一区| 精品无人区乱码1区2区3区在线| 久久精品电影网| 欧美激情精品久久久久久蜜臀| 亚洲成人精品视频在线观看| 日韩国产激情在线| 亚洲国产古装精品网站| 亚洲国产高潮在线观看| 亚洲欧洲在线播放| 日韩av在线天堂网| 九九精品视频在线观看| 精品久久久久国产| 日韩欧美在线一区| 久久成人在线视频| 亚洲第一精品电影| 亚洲欧美一区二区三区情侣bbw| 91亚洲国产成人久久精品网站| 国产精品成人va在线观看| 在线电影中文日韩| 亚洲色图校园春色| 日韩大片免费观看视频播放| 欧美在线视频一区二区| 国产视频久久久久| 亚洲图片在线综合| 国产精品男人的天堂| 一区二区三区回区在观看免费视频| 久久在线视频在线| 91黑丝在线观看| 欧美成人免费小视频| 欧美黑人狂野猛交老妇| 亚洲第一网站男人都懂| 欧美精品少妇videofree| 国产美女精品视频| 亚洲影院色无极综合| 欧美亚洲成人xxx| 日本精品一区二区三区在线| 欧美视频中文字幕在线| 久久777国产线看观看精品| 国产免费观看久久黄| 国产丝袜一区二区三区| 性欧美亚洲xxxx乳在线观看| 欧美性猛交视频| 亚洲精品美女久久久久| 日韩免费av片在线观看| 国产一区二区三区视频在线观看| 久久精品在线播放| 久久精品国产亚洲精品2020| 久久久国产影院| 久久久久久久久国产| 久久久人成影片一区二区三区| 中文国产成人精品久久一| 久久久久女教师免费一区| 欧美激情视频在线| 欧美专区国产专区| 亚洲mm色国产网站| 97久久国产精品| 日韩精品视频在线观看免费| 国产精品久久久久aaaa九色| 国产美女久久久| 久久久日本电影|