<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    漁人碼頭

    天行健,君子以自強(qiáng)不息。地勢坤,君子以厚德載物。
    posts - 12, comments - 16, trackbacks - 0, articles - 43
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    JSP 使用 彩色圖片驗證碼( Servlet 生成)

    Posted on 2007-01-22 11:50 Fisher 閱讀(1321) 評論(1)  編輯  收藏 所屬分類: Java基礎(chǔ)
    起servlet服務(wù)吧
    首頁
    <img src="RandomCodeCtrl"/>

    web.xml
    <servlet>
    <servlet-name>RandomCodeCtrl</servlet-name>
    <servlet-class>com.chainway.util.RandomCodeCtrl</servlet-class>
    <load-on-startup>4</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>RandomCodeCtrl</servlet-name>
    <url-pattern>/RandomCodeCtrl</url-pattern>
    </servlet-mapping>

    RandomCodeCtrl:
    package com.chainway.util;

    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 RandomCodeCtrl extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException {
    resp.setContentType("image/jpeg");
    resp.setHeader("Pragma","No-cache");
    resp.setHeader("Cache-Control","no-cache");
    resp.setDateHeader("Expires", 0);
    RandomCode rc = new RandomCode();
    try{
    rc.getRandcode(req,resp);
    }catch(Exception e){
    System.err.println(e);
    }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doGet(request, response);
    }
    }

    //生成類
    //數(shù)字文字圖片驗證碼
    package com.chainway.util;

    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 RandomCode {
    /**
    * 隨機(jī)取得一個字體
    * @param Random random 隨機(jī)數(shù)
    * @return Font 返回一個新字體
    */
    private synchronized Font getsFont(Random random){
    return new Font("Fixedsys",Font.CENTER_BASELINE,18);
    }
    /**
    * 返回一個隨機(jī)顏色
    * @param int fc 隨機(jī)數(shù)
    * @param int bc 隨機(jī)數(shù)
    * @param Random random 隨機(jī)數(shù)
    * @return Color 返回一個新顏色
    */
    synchronized Color getRandColor(int fc,int bc,Random random){
    if(fc>255) fc=255;
    if(bc>255) bc=255;
    int r=fc+random.nextInt(bc-fc-6);
    int g=fc+random.nextInt(bc-fc-4);
    int b=fc+random.nextInt(bc-fc-8);
    return new Color(r,g,b);
    }
    /**
    * 生成隨機(jī)數(shù)圖片
    */
    public synchronized void getRandcode(HttpServletRequest request,HttpServletResponse response)throws Exception{
    System.setProperty("java.awt.headless","true");
    HttpSession session = request.getSession();
    int width=80, height=26;//設(shè)置圖片大小
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    Random random = new Random();
    g.fillRect(0, 0, width, height);//設(shè)定邊框
    g.setFont(new Font("Times New Roman",Font.ROMAN_BASELINE,18));
    g.setColor(getRandColor(111,133,random));
    //產(chǎn)生隨機(jī)線
    for (int i=0;i<11;i++){
    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);
    }
    //產(chǎn)生隨機(jī)點
    g.setColor(getRandColor(130,150,random));
    //產(chǎn)生5個隨機(jī)數(shù)
    String sRand="";
    for (int i=0;i<5;i++){
    g.setFont(getsFont(random));
    g.setColor(new Color(random.nextInt(101),random.nextInt(111),random.nextInt(121)));
    //String rand=String.valueOf(getRandomString(random.nextInt(36)));
    String rand=String.valueOf(getRandomString(random.nextInt(10)));
    sRand+=rand;
    g.translate(random.nextInt(3),random.nextInt(3));
    g.drawString(rand,13*i,16);
    }
    session.removeAttribute("Rand");
    session.setAttribute("Rand",sRand);
    g.dispose();
    ImageIO.write(image, "JPEG", response.getOutputStream());
    }

    public synchronized String getRandomString(int num){
    String randstring = "0123456789";
    //String randstring = "0123456789abcdefghijklmnopqrstuvwxyz";
    return String.valueOf(randstring.charAt(num));
    }

    }

    //登陸判斷方法
    從session里面取驗證碼數(shù)字進(jìn)行比較

    評論

    # re: JSP 使用 彩色圖片驗證碼( Servlet 生成)  回復(fù)  更多評論   

    2009-12-16 21:19 by 笑話論壇
    我在面頁調(diào)用時,怎么取出來的值總是上一次的啊?
    而且第一次取的值是空的

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费人成视频在线观看网站 | 亚洲AV永久无码天堂影院| 亚洲国产系列一区二区三区| 亚洲国产欧美日韩精品一区二区三区| 看亚洲a级一级毛片| free哆拍拍免费永久视频 | 一日本道a高清免费播放| 99久久免费国产特黄| 18pao国产成视频永久免费| 成人毛片免费观看视频大全| 亚洲精品无码日韩国产不卡?V| 亚洲成色在线综合网站 | 亚洲乱码精品久久久久..| 久久久亚洲裙底偷窥综合| 亚洲AV无码成人精品区日韩| 国产黄片不卡免费| 5g影院5g天天爽永久免费影院| 成人免费看吃奶视频网站| 国内精品久久久久久久亚洲| 亚洲理论片在线中文字幕| 风间由美在线亚洲一区| 国产高清不卡免费视频| 成年女人毛片免费观看97| 国产亚洲午夜高清国产拍精品| 亚洲另类精品xxxx人妖| 免费福利资源站在线视频| 99久在线国内在线播放免费观看| 免费激情视频网站| 亚洲国产精品嫩草影院在线观看| 亚洲乱码一二三四区乱码| jyzzjyzz国产免费观看| 18禁网站免费无遮挡无码中文| 亚洲福利视频一区二区| 亚洲毛片免费观看| 一级毛片一级毛片免费毛片| 黄页免费的网站勿入免费直接进入| 亚洲美女在线国产| 亚洲日本成本人观看| 久9热免费精品视频在线观看| 精品国产免费观看| 亚洲视频精品在线观看|