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

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

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

    內(nèi)蒙古java團(tuán)隊(duì)

    j2se,j2ee開發(fā)組
    posts - 139, comments - 212, trackbacks - 0, articles - 65
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    ???????? 本文將介紹另一種J2EE中驗(yàn)證碼的產(chǎn)生跟使用,即在Servlet中定義驗(yàn)證碼的產(chǎn)生并使用,通過將驗(yàn)證碼的生成封裝到JAVA類中,更好的達(dá)到代碼跟頁(yè)面分離的效果,因此提倡使用該方法。
    ??Servlet中實(shí)現(xiàn)四位數(shù)字驗(yàn)證碼
    ???以下為在Servlet中實(shí)現(xiàn)四位數(shù)字驗(yàn)證碼的源碼分析。
    ?

    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.*;
    /*
    ?* 功能:調(diào)用AuthCodeServlet可以生成一個(gè)4位數(shù)字的驗(yàn)證碼圖片,驗(yàn)證碼的圖片寬度和高度可以通過配置文件進(jìn)行定義
    ?* 驗(yàn)證碼調(diào)用格式為: /servlet/AuthCodeServlet?w=78&h=32
    ?* 或者使用默認(rèn)長(zhǎng)寬/servlet/AuthCodeServlet
    ?*/
    ?? public class AuthCodeServlet extends HttpServlet {
    ?? // 處理post
    ??? public void doPost(HttpServletRequest req,HttpServletResponse res)
    ??? throws ServletException,IOException {
    ??? doGet(req,res);
    ?}

    ?? //設(shè)置字體
    ?? 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; //驗(yàn)證碼默認(rèn)長(zhǎng)度
    ???? int height=24; //驗(yàn)證碼默認(rèn)寬度
    ???? 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); //新建驗(yàn)證圖片,并設(shè)置驗(yàn)證碼圖片的大小
    ???? Graphics gra=image.getGraphics(); //獲取圖形上下文
    ???? Random random=new Random();
    ???? gra.setColor(getRandColor(260,210));??? //設(shè)置驗(yàn)證碼的圖片背景色
    ???? gra.fillRect(0,0,width,height);
    ???? gra.setColor(Color.BLUE); //設(shè)置字體色為藍(lán)色
    ???? gra.setFont(mFont); //設(shè)置定義的字體格式

    ???? // 隨機(jī)產(chǎn)生254條干擾直線,使圖象中的驗(yàn)證碼不易被解析程序分析到
    ???? 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);
    ???? }

    ???? // 取隨機(jī)產(chǎn)生的驗(yàn)證碼(4位數(shù)字)
    ???? String sRand="";
    ???? for (int i=0;i<4;i++){
    ???? String rand=String.valueOf(random.nextInt(353));
    ???? sRand+=rand;
    ???? // 將認(rèn)證碼顯示到圖象中
    ????? gra.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
    ???? //調(diào)用隨機(jī)函數(shù)構(gòu)建隨機(jī)顏色三素
    ???????? 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){
    ????????? //給定范圍獲得隨機(jī)顏色
    ????????? 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){
    ??? //返回驗(yàn)證碼
    ??? return (String)session.getAttribute("AuthCode");
    ?? }
    }

    主站蜘蛛池模板: 99热免费在线观看| 国产精品酒店视频免费看| 91亚洲国产成人精品下载| 又黄又爽又成人免费视频| 亚洲妇女无套内射精| 亚洲av片一区二区三区| a级毛片在线视频免费观看| 亚洲av日韩av无码av| 亚洲成A人片在线观看无码3D| 免费国产成人α片| 亚洲精品国产综合久久久久紧| 亚洲熟伦熟女新五十路熟妇| 18女人腿打开无遮掩免费| 国产亚洲美女精品久久| 亚洲国产成人高清在线观看| 成人毛片18女人毛片免费视频未| 九九久久国产精品免费热6| 亚洲视频手机在线| 亚洲一区二区精品视频| 国产免费久久精品99re丫y| 中文字幕高清免费不卡视频| 亚洲色偷偷综合亚洲AV伊人蜜桃| 久久久久久久综合日本亚洲| 免费无码不卡视频在线观看| 午夜免费啪视频在线观看| 国产精品亚洲五月天高清| 亚洲综合久久1区2区3区| 亚洲日韩在线观看| 日韩在线免费电影| 国产92成人精品视频免费| 久久九九免费高清视频| 亚洲日韩一中文字暮| 亚洲欧洲日产国码久在线观看| 亚洲av成人一区二区三区在线观看 | 亚洲午夜在线一区| 亚洲人成伊人成综合网久久久| 免费观看的a级毛片的网站| 最近中文字幕无免费| 三年片免费观看大全国语| 无套内射无矿码免费看黄| 亚洲日韩国产AV无码无码精品|