欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

JSP實例:Java實現隨機驗證碼功能實例_JSP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:使用Stripes進行Java Web開發
Stripes是一個以讓程序員的web開發簡單而高效為準則來設計的基于動作的開源Java web框架。本文將介紹Stripes與其它如Struts之類基于動作的框架的區別和其提供的一些存在于Ruby on Rails之中的簡單性。 Stripes是一個以讓程序員的web開發簡單而高效為準則來設

ml中聲明servle

現在許多系統的注冊、登錄或者發布信息模塊都添加的隨機碼功能,就是為了避免自動注冊程序或者自動發布程序的使用。

驗證碼實際上就是隨機選擇一些字符以圖片的形式展現在頁面上,如果進行提交操作的同時需要將圖片上的字符同時提交,如果提交的字符與服務器session保存的不同,則認為提交信息無效。為了避免自動程序分析解析圖片,通常會在圖片上隨機生成一些干擾線或者將字符進行扭曲,增加自動識別的難度。

在這里,我們使用servlet來實現隨機驗證碼的實現。

package com.servlet;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 生成隨機驗證碼
 * @author bitiliu
 *
 */
public class ValidateCodeServlet extends HttpServlet 
{

 private static final long serialVersionUID = 1L;
 
 //驗證碼圖片的寬度。
    private int width=60;
    //驗證碼圖片的高度。
    private int height=20;
    //驗證碼字符個數
    private int codeCount=4;
    
    
    private int x=0;
    //字體高度
    private int fontHeight;    
    private int codeY;
    
    char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
   'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
   'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    
    /**
     * 初始化驗證圖片屬性
     */
    public void init() throws ServletException
 {
     //從web.xml中獲取初始信息
     //寬度
  String strWidth=this.getInitParameter("width");
  //高度
  String strHeight=this.getInitParameter("height");
  //字符個數
  String strCodeCount=this.getInitParameter("codeCount"); 
  
  //將配置的信息轉換成數值
  try
  {
   if(strWidth!=null && strWidth.length()!=0)
   {
    width=Integer.parseInt(strWidth);
   }
   if(strHeight!=null && strHeight.length()!=0)
   {
    height=Integer.parseInt(strHeight);
   }
   if(strCodeCount!=null && strCodeCount.length()!=0)
   {
    codeCount=Integer.parseInt(strCodeCount);
   }
  }
  catch(NumberFormatException e)
  {}
  
  x=width/(codeCount+1);
  fontHeight=height-2;
  codeY=height-4;
  
 }
    
    protected void service(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, java.io.IOException {
     
     //定義圖像buffer
  BufferedImage buffImg = new BufferedImage(
width, height,BufferedImage.TYPE_INT_RGB);
  Graphics2D g = buffImg.createGraphics();

  //創建一個隨機數生成器類
  Random random = new Random();

  //將圖像填充為白色
  g.setColor(Color.WHITE);
  g.fillRect(0, 0, width, height);

  //創建字體,字體的大小應該根據圖片的高度來定。
  Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);
  //設置字體。
  g.setFont(font);

  //畫邊框。
  g.setColor(Color.BLACK);
  g.drawRect(0, 0, width - 1, height - 1);

  //隨機產生160條干擾線,使圖象中的認證碼不易被其它程序探測到。
  g.setColor(Color.BLACK);
  for(int i = 0; i < 160; i++) 
  {
   int x = random.nextInt(width);
   int y = random.nextInt(height);
   int xl = random.nextInt(12);
   int yl = random.nextInt(12);
   g.drawLine(x, y, x + xl, y + yl);
  }

  //randomCode用于保存隨機產生的驗證碼,以便用戶登錄后進行驗證。
  StringBuffer randomCode = new StringBuffer();
  int red = 0, green = 0, blue = 0;

  //隨機產生codeCount數字的驗證碼。
  for (int i = 0; i < codeCount; i++) {
   //得到隨機產生的驗證碼數字。
   String strRand = String.valueOf(codeSequence[random.nextInt(36)]);
   //產生隨機的顏色分量來構造顏色值,這樣輸出的每位數字的顏色值都將不同。
   red = random.nextInt(255);
   green = random.nextInt(255);
   blue = random.nextInt(255);

   //用隨機產生的顏色將驗證碼繪制到圖像中。
   g.setColor(new Color(red, green, blue));
   g.drawString(strRand, (i + 1) * x, codeY);

   //將產生的四個隨機數組合在一起。
   randomCode.append(strRand);
  }
  // 將四位數字的驗證碼保存到Session中。
  HttpSession session = req.getSession();
  session.setAttribute("validateCode", randomCode.toString());

  // 禁止圖像緩存。
  resp.setHeader("Pragma", "no-cache");
  resp.setHeader("Cache-Control", "no-cache");
  resp.setDateHeader("Expires", 0);

  resp.setContentType("image/jpeg");

  //將圖像輸出到Servlet輸出流中。
  ServletOutputStream sos = resp.getOutputStream();
  ImageIO.write(buffImg, "jpeg", sos);
  sos.close();
 }

}

需要在web.xml中聲明servlet

<servlet>
 <servlet-name>ValidateCodeServlet</servlet-name>
 <servlet-class>com.servlet.ValidateCodeServlet</servlet-class>
 <init-param>
  <param-name>width</param-name>
  <param-value>200</param-value>
 </init-param>
 <init-param>
  <param-name>height</param-name>
  <param-value>80</param-value>
 </init-param>
 <init-param>
  <param-name>codeCount</param-name>
  <param-value>5</param-value>
 </init-param>
  </servlet>

  <servlet-mapping>   
 <servlet-name>ValidateCodeServlet</servlet-name>   
 <url-pattern>/validateCodeServlet</url-pattern>   
  </servlet-mapping>

需要引用的頁面可以這樣來寫:

<ccid_file values="validateCodeServlet" width="100/" />

用戶提交后就可以將用戶輸入的驗證碼與session中保存的字符串進行比對,達到驗證的效果。

分享:Java mail 詳解與實例
綜述:Java Mail API的開發是SUN為Java開發者提供公用API框架的持續努力的良好例證。提倡公用框架,反對受限于供應商的解決方案,充分預示著一個日益開放的開發環境的建立。 Java Mail API的結構本身證明了它的開發者的基本目標之一--軟件開發的工作量應該取

來源:模板無憂//所屬分類:JSP教程/更新時間:2012-06-11
相關JSP教程
亚洲欧美久久久| 夜夜爽8888| 日韩有码中文字幕在线| 91丨porny丨在线| 精品视频久久久| 欧美日韩亚洲一区二区三区四区| 黄色aaa视频| 日本免费成人| 成人免费高清在线观看| 亚洲欧美在线播放| 熟女熟妇伦久久影院毛片一区二区| 国产真实乱在线更新| 99re8这里有精品热视频免费| 26uuu欧美| 久久精品视频在线| 阿v天堂2017| 亚洲一区二区色| 在线欧美一区| 欧美欧美欧美欧美首页| 国产精品国色综合久久| 无码一区二区三区在线| 日韩精品久久久久久久软件91| 99久久精品国产一区二区三区| 最近2019好看的中文字幕免费| 欧美国产综合在线| 中文字幕在线一| 99日韩精品| 日韩一区二区三区四区| 日产精品久久久一区二区| 538精品在线观看| re久久精品视频| 五月天一区二区三区| 成人日韩在线电影| 国产一二三四五区| 欧美五码在线| 亚洲综合清纯丝袜自拍| 国产精品日日做人人爱| 久久人妻一区二区| 1313精品午夜理伦电影| 欧美国产欧美综合| 69精品小视频| 亚洲精品鲁一鲁一区二区三区| 色综合天天色| 久久精品人人做人人爽人人| 欧美丰满少妇xxxxx| 色婷婷成人在线| 天天综合网站| 久久精品免费在线观看| 欧美中文字幕在线视频| 国产国语老龄妇女a片| 精品国产三区在线| 国产精品伦理在线| 国产精品高精视频免费| 少妇按摩一区二区三区| 亚洲精华一区二区三区| 亚洲成av人片在www色猫咪| 51精品国产人成在线观看| 国产黄a三级三级| av在线不卡顿| 欧美视频一区在线| 日本成人三级电影网站| 三级视频在线观看| 久久精品主播| 亚洲一区二区黄| 欧美牲交a欧美牲交aⅴ免费下载| 亚洲乱熟女一区二区| 国产成人免费高清| 欧美国产日韩精品| 久久久久99人妻一区二区三区| 美女精品视频在线| 亚洲精品一卡二卡| 成人高清在线观看| 国产午夜精品无码| 国产一区二区三区久久久久久久久| 日韩av在线播放资源| 欧美牲交a欧美牲交| 成人动漫一区| 给我看免费高清在线观看| av女名字大全列表| 国产日韩欧美精品综合| 国产精品日韩欧美大师| 91视频青青草| 亚洲三级色网| 亚洲天堂免费视频| 中文字幕22页| 136福利精品导航| 欧美日韩在线视频一区| 日韩欧美精品久久| 91久久国语露脸精品国产高跟| 国内久久精品视频| 性欧美亚洲xxxx乳在线观看| japanese中文字幕| 欧美韩国一区| 亚洲女人被黑人巨大进入| 国产自偷自偷免费一区| 国产一区二区av在线| 亚洲一区二区在线观看视频| 免费久久99精品国产自| 97精品人妻一区二区三区| 成人深夜福利app| 国产国产精品人在线视| www深夜成人a√在线| 一区二区日韩免费看| 中文字幕亚洲无线码在线一区| 99视频在线观看视频| 亚洲国产国产| 欧美一区国产二区| 国产一区亚洲二区三区| 欧美专区视频| 91黄视频在线| 国产欧美日韩网站| 全球中文成人在线| 欧美日韩另类字幕中文| 一区二区在线不卡| 欧美舌奴丨vk视频| 一区二区三区在线视频观看| 日韩jizzz| 天堂在线观看视频| 亚洲精品亚洲人成人网| 欧美一区激情视频在线观看| 成人激情四射网| 国产精品色在线观看| 国产综合18久久久久久| 国产人妻精品一区二区三区| 久久婷婷久久一区二区三区| 成人av免费看| 一区二区美女视频| 久久九九久久九九| 久久精品国产精品国产精品污 | 亚洲欧美日韩国产中文专区| 亚洲精品一二三四| 91欧美国产| 亚洲男人av电影| 欲求不满的岳中文字幕| 中文字幕一区二区av| 中文综合在线观看| 欧美偷拍一区二区三区| 国产精品日韩久久久| 欧美黄色免费网站| 久久久久久视频| 精品一区二区三区视频在线观看| 国产精品老女人精品视频| 五月婷婷视频在线| 91在线porny国产在线看| 国产精品久久久久免费| 精品国产av 无码一区二区三区 | 中国特级黄色片| 亚洲乱码精品| 久久精品成人欧美大片| 91无套直看片红桃在线观看| 热久久国产精品| 国产精品电影观看| 中文字幕免费播放| 中文av一区二区| 日韩经典在线视频| 日本美女一区| 欧美体内she精视频| 精品少妇无遮挡毛片| 国产99亚洲| 亚洲人成电影网站| a天堂中文字幕| 奇米四色…亚洲| 国产精品一区久久| 在线观看亚洲一区二区| 国产精品国产三级国产专播品爱网| 亚洲啪啪av| 99久久这里有精品| 日韩亚洲欧美综合| 国产女人18毛片水真多18| 亚洲精华国产欧美| 欧美中文在线观看| 精品国产青草久久久久96| 国产精品嫩草99a| xxxxxx在线观看| 卡一精品卡二卡三网站乱码| 精品一区二区电影| 欧美丰满老妇熟乱xxxxyyy| 久久精品国产77777蜜臀| 成人在线一区二区| 亚洲美女福利视频| 高跟丝袜欧美一区| 免费涩涩18网站入口| 亚洲成人日韩| 久久人人看视频| 波多野结衣大片| 亚洲欧美国产毛片在线| 国产精品久久..4399| 精品国产aⅴ| 九九热精品视频国产| 1级黄色大片儿| 国产精品午夜免费| 国内自拍中文字幕| 亚洲区小说区图片区qvod按摩| 影音先锋日韩有码| 亚洲av无码一区二区三区在线| 99精品视频在线播放观看| 色噜噜狠狠一区二区三区| 精品视频在线播放一区二区三区| 亚洲电影av在线| 亚洲一级片在线播放| 懂色av一区二区三区蜜臀 | 欧美交换配乱吟粗大25p| 青青一区二区| 久久综合电影一区| 一级片中文字幕| 亚洲欧美aⅴ...| 激情婷婷综合网| 国产精品大片| 国产精品一区=区| 午夜视频免费在线| 日韩一区二区在线免费观看| 欧美色图亚洲激情| 懂色av一区二区三区免费观看| 五码日韩精品一区二区三区视频| ccyy激情综合| 久久精品视频在线观看| 午夜影院免费在线观看| 亚洲在线视频免费观看| 亚洲欧美自拍另类日韩| 国产日韩欧美| 999久久久| 国产日本亚洲| 色偷偷亚洲男人天堂| 中国一级特黄毛片| 亚洲最新在线观看| 亚洲欧美日韩三级| 奇米精品一区二区三区四区| 鲁丝一区二区三区免费| 91精品入口| 久久天天躁日日躁| 中文字幕 日韩有码| 色香欲www7777综合网| 91福利视频网站| 中出视频在线观看| 大美女一区二区三区| 91免费网站视频| 国产精品88久久久久久| 国产精品久久久久久久久久免费 | 国产69精品久久久| 国产日韩免费视频| 欧美日产在线观看| 欧美激情 一区| 国产欧美精品一区二区色综合朱莉| 天堂…中文在线最新版在线| 影音先锋亚洲电影| 国产伦精品一区二区三区| 国产精品x8x8一区二区| 欧美另类高清videos| 国产精品自产拍| 欧美人牲a欧美精品| ass极品国模人体欣赏| 中文文精品字幕一区二区| 中文字幕国产传媒| 男女激情视频一区| 亚洲国产午夜伦理片大全在线观看网站| 亚洲制服一区| 热久久免费视频精品| 99久久er| 久久中文字幕在线视频| 亚洲av无码国产综合专区| 日韩欧美的一区二区| 激情综合网五月婷婷| 天天综合网 天天综合色| 色婷婷免费视频| 久久久久国产成人精品亚洲午夜| 成人三级视频在线播放| 麻豆精品一区二区av白丝在线| 亚洲免费在线精品一区| 国产高清一区| 国产成人亚洲欧美| 亚洲涩涩av| 国产精品久久av| 欧美午夜网站| 77777亚洲午夜久久多人| 偷拍视频一区二区三区| 日韩午夜在线视频| 国产毛片毛片毛片毛片毛片| 日韩免费高清av| 欧产日产国产69| 51精品视频一区二区三区| 精品少妇theporn| 色综合久久久网| 疯狂撞击丝袜人妻| 午夜婷婷国产麻豆精品| 国产精品久久免费观看| 亚洲精品免费视频| 俄罗斯黄色录像| 国产嫩草影院久久久久| 波多野结衣在线免费观看| 99久久精品免费观看| 玩弄japan白嫩少妇hd| 国产又黄又大久久| 久久视频这里有精品| 裸体在线国模精品偷拍| 97干在线视频| 免费成人美女在线观看| youjizz.com在线观看| 日本怡春院一区二区| 欧美激情亚洲天堂| 青青草原综合久久大伊人精品优势| 久久久成人精品一区二区三区| 99国产精品视频免费观看一公开 | 在线亚洲欧美日韩| 亚洲精品福利免费在线观看| 91亚洲国产成人久久精品麻豆| 亚洲国产精品久久久久久| 中文字幕在线观看免费| 日韩av最新在线观看| 国产日韩一级片| 国产亚洲一区二区精品| 俄罗斯嫩小性bbwbbw| 日韩一区二区精品视频| 亚洲欧洲日本韩国| 欧美大胆a视频| 欧美性理论片在线观看片免费| 久久91亚洲人成电影网站| 99只有精品| 欧美在线免费视频| av不卡一区| 91亚洲精品视频| 日韩精品永久网址| 蜜桃视频在线观看91| 激情亚洲成人| 激情五月五月婷婷| 裸体在线国模精品偷拍| 少妇人妻互换不带套| 久久众筹精品私拍模特| 国产一精品一aⅴ一免费| 亚洲欧洲精品天堂一级| 在线观看免费小视频| 91黄视频在线| 国产一级淫片a视频免费观看| 亚洲福利小视频| 亚洲国产精品18久久久久久| 欧美老妇交乱视频| 成人乱码手机视频| 国产精品一区二区三区成人| 欧美视频网址| 日本精品一区二区三区视频| 亚洲欧美日韩视频二区| 日本欧美视频在线观看| 成人免费的视频| 逼特逼视频在线观看| 亚洲午夜一区二区三区| 青娱乐av在线| 日韩三级在线免费观看| 国产美女无遮挡永久免费| 日韩在线观看精品| 精品久久毛片| 成人国内精品久久久久一区| 欧美独立站高清久久| 自拍偷拍99| 国产成人免费在线观看| 国产人妖在线观看| 亚洲国产wwwccc36天堂| 日本一区二区不卡在线| 亚洲第一区中文99精品| 色婷婷视频在线| …久久精品99久久香蕉国产| 亚洲免费毛片| 欧美日韩亚洲在线| 日韩福利视频导航| 五月婷婷丁香色| 日韩美女视频19| 国产亚洲精品成人| 亚洲激情视频在线播放| 高清不卡亚洲| 国产精品免费一区二区三区都可以 | 国产精品麻豆视频| 久久人妻无码aⅴ毛片a片app| 欧美一区二区三区色| 高h震动喷水双性1v1| 5278欧美一区二区三区| 国产剧情在线观看一区| 一区二区三区在线观看www| 国产一区亚洲一区| www.四虎在线| 在线观看亚洲a| 国产美女精品视频国产| 午夜伦理精品一区| 国产欧美日韩免费观看| 在线天堂一区av电影| 成人午夜在线免费| 国产色视频一区二区三区qq号| 欧美三电影在线| 性猛交xxxx乱大交孕妇印度| 日本在线观看天堂男亚洲| 最新中文字幕一区| 99久久婷婷国产综合精品电影| 美女又黄又免费的视频| 日韩欧美aaa| 国产又黄又爽视频| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 日韩不卡一区二区| 亚洲丝袜在线观看| 欧美午夜激情视频| 国产av无码专区亚洲av| 国产成人精品久久二区二区| 综合一区二区三区| 爆乳熟妇一区二区三区霸乳|