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

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

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

    即興的靈感

    思維是一種藝術; 藝術需要靈感。

    博客好友

    最新評論

    JSP驗證碼大全之Servlet實現(一)

    ???在以上的內容中闡述了在JSP中產生并實現了數字驗證碼中文驗證碼的過程,以及如何在JSP中驗證碼調用和解決中文問題,并對驗證碼的使用做了分析。本文將介紹另一種J2EE中驗證碼的產生跟使用,即在Servlet中定義驗證碼的產生并使用,通過將驗證碼的生成封裝到JAVA類中,更好的達到代碼跟頁面分離的效果,因此提倡使用該方法。
    ???五、Servlet中實現四位數字驗證碼
    ???以下為在Servlet中實現四位數字驗證碼的源碼分析。
    ?

    import java.awt.image.*;
    import com.sun.image.codec.jpeg.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import java.awt.*;
    /*
    ?* 功能:調用AuthCodeServlet可以生成一個4位數字的驗證碼圖片,驗證碼的圖片寬度和高度可以通過配置文件進行定義
    ?* 驗證碼調用格式為: /servlet/AuthCodeServlet?w=78&h=32
    ?* 或者使用默認長寬/servlet/AuthCodeServlet
    ?*/
    ?? public class AuthCodeServlet extends HttpServlet {
    ?? // 處理post
    ??? public void doPost(HttpServletRequest req,HttpServletResponse res)
    ??? throws ServletException,IOException {
    ??? doGet(req,res);
    ?}

    ?? //設置字體
    ?? private Font mFont=new Font("Times New Roman", Font.PLAIN,16);

    ?? public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {

    ???? HttpSession session=request.getSession();
    ???? response.setContentType("image/gif");
    ???? response.setHeader("Pragma","No-cache");
    ???? response.setHeader("Cache-Control","no-cache");
    ???? response.setDateHeader("Expires", 0);
    ???? int width=70; //驗證碼默認長度
    ???? int height=24; //驗證碼默認寬度
    ???? if(request.getParameter("w")!=null && !request.getParameter("w").equals(""))
    ????? width = Integer.parseInt(request.getParameter("w"));
    ???? if(request.getParameter("h")!=null && !request.getParameter("h").equals(""))
    ????? height = Integer.parseInt(request.getParameter("h"));
    ????????????????
    ???? ServletOutputStream out=response.getOutputStream(); //獲取輸出流
    ???? BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //新建驗證圖片,并設置驗證碼圖片的大小
    ???? Graphics gra=image.getGraphics(); //獲取圖形上下文
    ???? Random random=new Random();
    ???? gra.setColor(getRandColor(260,210));??? //設置驗證碼的圖片背景色
    ???? gra.fillRect(0,0,width,height);
    ???? gra.setColor(Color.BLUE); //設置字體色為藍色
    ???? gra.setFont(mFont); //設置定義的字體格式

    ???? // 隨機產生254條干擾直線,使圖象中的驗證碼不易被解析程序分析到
    ???? gra.setColor(getRandColor(110,240));
    ???? for (int i=0;i<254;i++)
    ???? {
    ????? int x = random.nextInt(width);
    ????? int y = random.nextInt(height);
    ???????????? int xl = random.nextInt(63);
    ???????????? int yl = random.nextInt(64);
    ????? gra.drawLine(x,y,x+xl,y+yl);
    ???? }

    ???? // 取隨機產生的驗證碼(4位數字)
    ???? String sRand="";
    ???? for (int i=0;i<4;i++){
    ???? String rand=String.valueOf(random.nextInt(353));
    ???? sRand+=rand;
    ???? // 將認證碼顯示到圖象中
    ????? gra.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
    ???? //調用隨機函數構建隨機顏色三素
    ???????? gra.drawString(rand,13*i+6,16);
    ???? }
    ???????? session.setAttribute("authCode",sRand);
    ???????? JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
    ???????? encoder.encode(image);

    ?}

    ?? static Color getRandColor(int ff,int cc){
    ????????? //給定范圍獲得隨機顏色
    ????????? Random random = new Random();
    ????????? if(fc>255) ff=255;
    ????????? if(bc>255) cc=255;
    ????????? int r=ff+random.nextInt(cc-ff);
    ????????? int g=ff+random.nextInt(cc-ff);
    ????????? int b=ff+random.nextInt(cc-ff);
    ????????? return new Color(r,g,b);
    ?? }
    ??
    ?? static public String getAuthCode(HttpSession session){
    ??? //返回驗證碼
    ??? return (String)session.getAttribute("AuthCode");
    ?? }
    }

    ???以上即是通過Servlet中創建并生產數字驗證碼的源碼分析,下一篇文章將介紹在Servlet中生成數字字母混合驗證碼的過程,并說明如何對Servlet中的驗證碼進行使用

    ?
    鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
    ???? 隱姓埋名/低調華麗/簡單生活/完美人生

    posted on 2008-12-01 18:00 poetguo 閱讀(5608) 評論(4)  編輯  收藏 所屬分類: JSPJAVA

    評論

    # re: JSP驗證碼大全之Servlet實現(一) 2010-05-03 10:58 dsfgsd

    dsfgds  回復  更多評論   

    # re: JSP驗證碼大全之Servlet實現(一) 2010-05-03 10:58 dsfgsd

    jfgyjdyj  回復  更多評論   

    # re: JSP驗證碼大全之Servlet實現(一) 2010-05-03 10:59 dsfgsd

    dgkmg  回復  更多評論   

    # re: JSP驗證碼大全之Servlet實現(一) 2014-07-06 20:52 肖日明

    好  回復  更多評論   

    主站蜘蛛池模板: 亚洲国模精品一区 | 天天综合亚洲色在线精品| 无码精品一区二区三区免费视频| 免费一级毛片在播放视频| 丰满亚洲大尺度无码无码专线| 大陆一级毛片免费视频观看 | 狠狠综合亚洲综合亚洲色| 成人毛片免费观看| 亚洲国产成人久久一区二区三区 | 免费一级全黄少妇性色生活片| 国产成人精品男人免费| 黄色网址大全免费| 久久精品国产亚洲一区二区三区| 一区二区视频免费观看| 国产亚洲A∨片在线观看| 美女视频黄的免费视频网页 | 99精品视频在线视频免费观看| 亚洲VA中文字幕无码毛片| 三年片在线观看免费观看大全动漫| 无码欧精品亚洲日韩一区| 99免费在线观看视频| 亚洲综合色区中文字幕| 男女啪啪永久免费观看网站| 羞羞漫画页面免费入口欢迎你| 久久亚洲精品无码观看不卡| 久9热免费精品视频在线观看| 亚洲一区二区三区亚瑟| 成人免费视频国产| a级片免费在线播放| 亚洲的天堂av无码| 亚洲成A人片在线观看中文| 成全视频免费观看在线看| 亚洲欧洲日产v特级毛片| 国产成人精品免费视频大全五级| v片免费在线观看| 亚洲精品国产免费| 国产又粗又猛又爽又黄的免费视频 | 亚洲深深色噜噜狠狠爱网站| 久久国产乱子伦免费精品| 亚洲AV无码成人网站在线观看| 亚洲中文字幕无码爆乳AV|