国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > JSP > 正文

JSP實現(xiàn)登錄功能之添加驗證碼

2024-09-05 00:22:47
字體:
供稿:網(wǎng)友

jsp登陸驗證,網(wǎng)頁登陸驗證帶驗證碼校驗,登錄功能之添加驗證碼

part_1:專門用于生成一個驗證碼圖片的類:VerificationCode.Java

package cn.mike.javase.test; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; import org.junit.Test; /**  * @author : Administrator  * @function : 這是用來測試隨機生成驗證碼圖片的類;  */ public class VerificationCode {   /**    * 單元測試,試一下能不能自動生成驗證碼圖片    */   // 這個函數(shù)是單元測試時使用的,這里private一下外面就調(diào)用不到了;   /* @Test */   /* public */private void test_fun() {     VerificationCode vc = new VerificationCode();     BufferedImage image = vc.getImage();     try {       // 生成驗證碼圖片,并保存到指定的路徑       VerificationCode.output(image, new FileOutputStream(new File(           ".//image//vcode_2.jpg")));     } catch (FileNotFoundException e) {       e.printStackTrace();     }     // 將隨機生成的文本內(nèi)容輸出到控制臺,用于校驗     System.out.println(vc.getText());   }   private int w = 70;// 寬   private int h = 35;// 高   private String text;// 文本內(nèi)容(驗證碼字符串)   private Random r = new Random();   private String[] fontNames = { "宋體", "華文楷體", "黑體", "微軟雅黑", "楷體_GB2312" };   // 隨機字符集合中不包括0和o,O,1和l,因為這些不易區(qū)分   private String codes = "23456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYXZ";   // 驗證碼圖片的背景色:白色   private Color bgColor = new Color(255, 255, 255);   /**    * 返回一個驗證碼圖片buffer對象:BufferedImage    */   public BufferedImage getImage() {     BufferedImage image = createImage();     // 獲取繪圖環(huán)境(畫筆工具)     Graphics2D g2 = (Graphics2D) image.getGraphics();     // sb : 用來保存驗證碼字符串文本內(nèi)容     StringBuilder sb = new StringBuilder();     for (int i = 0; i < 4; ++i) {// 隨機生成4個字符       String s = randomChar() + "";       sb.append(s);       float x = i * 1.0F * w / 4;       g2.setFont(randomFont());       g2.setColor(randomColor());       g2.drawString(s, x, h - 5);     }     this.text = sb.toString();// 記錄驗證碼文本內(nèi)容     drawLine(image);// 畫干擾線     return image;   }   /**    * @return 獲取驗證碼文本內(nèi)容    */   public String getText() {     return text;   }   /**    * @param image    * @param out    *      將文本寫到指定的輸出流。比如本測試中FileOutputStream指定的保存路徑    */   public static void output(BufferedImage image, OutputStream out) {     try {       ImageIO.write(image, "jpeg", out);     } catch (IOException e) {       e.printStackTrace();     }   }   private void drawLine(BufferedImage image) {     Graphics2D g2 = (Graphics2D) image.getGraphics();     for (int i = 0; i < 3; ++i) {// 畫3條干擾線       int x1 = r.nextInt(w);       int y1 = r.nextInt(h);       int x2 = r.nextInt(w);       int y2 = r.nextInt(h);       g2.setColor(Color.BLUE);       g2.drawLine(x1, y1, x2, y2);     }   }   private Color randomColor() {     int red = r.nextInt(150);     int green = r.nextInt(150);     int blue = r.nextInt(150);     return new Color(red, green, blue);   }   private Font randomFont() {     int index = r.nextInt(fontNames.length);     String fontName = fontNames[index];     int style = r.nextInt(4);     int size = r.nextInt(5) + 24;     return new Font(fontName, style, size);   }   private char randomChar() {     int index = r.nextInt(codes.length());     return codes.charAt(index);   }   private BufferedImage createImage() {     BufferedImage image = new BufferedImage(w, h,         BufferedImage.TYPE_INT_RGB);     Graphics2D g2 = (Graphics2D) image.getGraphics();     g2.setColor(this.bgColor);     g2.fillRect(0, 0, w, h);     return image;   } }

part_2:登錄界面:Login.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>My JSP 'Login.jsp' starting page</title>     <meta http-equiv="pragma" content="no-cache">     <meta http-equiv="cache-control" content="no-cache">     <meta http-equiv="expires" content="0">     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">     <meta http-equiv="description" content="This is my page">     <!--   <link rel="stylesheet" type="text/css" href="styles.css">   -->     <script type="text/javascript">   function _change_verity_code() {     var imgElem = document.getElementById("img_src");     //添加一個請求參數(shù)a是因為,通常瀏覽器都有緩存,點擊換一張的時候沒反應(yīng),所以加一個請求參數(shù),獲取當(dāng)前請求時間,可以精確到毫秒,所以每次請求的參數(shù)都不同,所以瀏覽器有緩存也不妨礙;     imgElem.src = "/ServletDemoProject/servlet/GetVerificationCodeServlet?a="         + new Date().getTime();   } </script>   </head>   <%     String fdbkMsg = (String) request.getAttribute("fdbkMsg");     if (null == fdbkMsg) {       fdbkMsg = "";     }   %>   <%     Boolean logedIn = (Boolean) session.getAttribute("logedIn");     if (null == logedIn) {       logedIn = false;     } else if (logedIn) {       //如果在本次會話已經(jīng)登陸,直接重定向到success-page-1       response           .sendRedirect("/ServletDemoProject/LOGIN-DEMO/success-page-1.jsp");     }   %>   <%     String username = "";     Cookie[] cookies = request.getCookies();     if ((null != cookies) && (cookies.length > 0)) {       for (Cookie c : cookies) {         if ("admin".equals(c.getValue())) {           username = "admin";           break;         }       }     }//end if-condition   %>   <body>     <br>     <div align="center">       請登錄:       <br>       <form action="/ServletDemoProject/servlet/LoginVerificationServlet"         method="post">         <div>           用戶名:           <input type="text" name="username" value="<%=username%>" />           <br>         </div>         <div>           密  碼:           <input type="password" name="password" />           <br>         </div>         <div>           驗證碼:           <input type="text" name="code_text" size="3" />           <img src="/ServletDemoProject/servlet/GetVerificationCodeServlet"             id="img_src" />           <a href="javascript:_change_verity_code()">換一張</a>           <br>         </div>         <div>           <font color='red'><%=fdbkMsg%></font>           <br>         </div>         <div>           <input type="submit" value="提交" />           <br>         </div>       </form>     </div>   </body> </html> 

part_3:處理登錄校驗的servlet :LoginVerificationServlet.java

package cn.mike.servlet.test_1212; import java.awt.image.BufferedImage; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.mike.javase.test.VerificationCode; public class GetVerificationCodeServlet extends HttpServlet {   private static final long serialVersionUID = -3520994675366100452L;   public void doGet(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     // 1.新建一個VerificationCode類;     VerificationCode vc = new VerificationCode();     // 2.從VerificationCode類中獲取BufferedImage對象;     BufferedImage bufImage = vc.getImage();     // 3.同時獲取驗證碼中的文本內(nèi)容,并放到session域中, 用于校驗;     String code_text = vc.getText();     request.getSession().setAttribute("code_text", code_text);     // 4.將生成的圖片輸出到客戶端瀏覽器     VerificationCode.output(bufImage, response.getOutputStream());   }// end method-doGet   public void doPost(HttpServletRequest request, HttpServletResponse response)       throws ServletException, IOException {     // do same as GET-method :     doGet(request, response);   }// end method-doPost } 

part_4:成功登陸后的提示界面1:success-page-1.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>My JSP 'success-page-1.jsp' starting page</title>     <meta http-equiv="pragma" content="no-cache">     <meta http-equiv="cache-control" content="no-cache">     <meta http-equiv="expires" content="0">     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">     <meta http-equiv="description" content="This is my page">     <!--   <link rel="stylesheet" type="text/css" href="styles.css">   -->   </head>   <%     String username = (String) session.getAttribute("username");     if (null == username) {       //如果username為空值,說明不是通過正常渠道來的,轉(zhuǎn)發(fā)到Login頁面;       request.setAttribute("fdbkMsg", "別想走后門進(jìn)來,趕緊登錄!");       request.getRequestDispatcher("/LOGIN-DEMO/Login.jsp").forward(           request, response);     }   %>   <body>     <br>     <%=username%>已經(jīng)成功登陸。     <br>     <font>您可以選擇瀏覽:</font>     <br>     <a href="/ServletDemoProject/LOGIN-DEMO/success-page-2.jsp">點這兒有精彩.</a>     <br>     <a href="/ServletDemoProject/LOGIN-DEMO/success-page-2.jsp">點這兒更精彩.</a>     <br />     <a href="/ServletDemoProject/LOGIN-DEMO/success-page-2.jsp">你敢點這兒嗎.</a>     <br />   </body> </html> 

part_5:成功登陸后的提示界面1:success-page-2.jsp

<%@ page language="java" import="java.util.Date" pageEncoding="UTF-8"%> <%@ page language="java" import="java.text.SimpleDateFormat"%> <%   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>My JSP 'success-page-2.jsp' starting page</title>     <meta http-equiv="pragma" content="no-cache">     <meta http-equiv="cache-control" content="no-cache">     <meta http-equiv="expires" content="0">     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">     <meta http-equiv="description" content="This is my page">     <!--   <link rel="stylesheet" type="text/css" href="styles.css">   -->   </head>   <%     String username = (String) session.getAttribute("username");     if (null == username) {       request.setAttribute("fdbkMsg", "呵呵嗒,這里是你來的地方嗎?快登陸!");       //轉(zhuǎn)發(fā)到登錄界面:       request.getRequestDispatcher("/LOGIN-DEMO/Login.jsp").forward(           request, response);     }     SimpleDateFormat sDateFormat = new SimpleDateFormat("a");     Date today = new Date();     String am_pm_str = sDateFormat.format(today);     String am_pm_str_in_chinese = "";     if ("am".equalsIgnoreCase(am_pm_str)) {       am_pm_str_in_chinese = "上午";     } else       am_pm_str_in_chinese = "下午";     // set null;     sDateFormat = null;     today = null;     am_pm_str = null;   %>   <body>     <br />     <font><b><%=username%><%=am_pm_str_in_chinese%>好,能來到頁面2真不簡單.</b>     </font>   </body> </html> 

以上所述是小編給大家介紹的JSP實現(xiàn)登錄功能之添加驗證碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到JSP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国内精品免费一区二区三区| 国产欧美在线观看视频| 国产特黄在线| 99热最新网址| 国产天堂在线| 在线视频观看亚洲| a视频免费看| 天堂在线看视频| 国产经典av| 亚洲精品天堂在线| www在线观看播放免费视频日本| 99久久99久久免费精品小说| 开心丁香婷婷深爱五月| 国产精品区一区二| a视频在线观看| 国产色在线观看| 欧洲亚洲精品视频| 国产丝袜精品丝袜| 青青草免费观看免费视频在线| 中文字幕在线看精品乱码| 国产95在线|亚洲| а天堂8中文最新版在线官网| 九九在线免费视频| 精灵使的剑舞无删减版在线观看| 黄色网址在线免费播放| 在线观看av中文| 久热久精久品这里在线观看| 国产高潮又爽又无遮挡又免费| 麻豆视频在线观看免费网站| 91视频黄色| 国产一卡2卡3卡4卡网站免费| 亚洲精品一区中文字幕电影| 国产午夜视频| 国产日韩欧美精品一区二区三区| 久热中文字幕精品视频在线| 精品电影在线| 在线国产一级| 亚洲日本久久久午夜精品| 2019中文字幕在线视频| 国产福利一区二区在线精品| 国产一区二区三区不卡免费观看| 亚洲xxxxxx| 先锋影音av中文字幕| 一区二区精品区| 国产精品探花在线| 国产九色视频| 国产网站av| 96精品视频| 永久av在线| 四虎国产精品永久| 亚洲夜夜综合| а天堂8中文最新版在线官网| 四虎免费视频| 免费在线超碰| 天堂在线中文资源| 国产视频精品久久| 国产无遮挡在线视频免费观看| 国产一级二级在线| 伊人免费视频| 国产女人伦码一区二区三区不卡| 欧美成人精品福利网站| 日本中文字幕在线观看| 国产呻吟对白刺激无套视频在线| 国产成在线观看免费视频| 亚洲视频日韩| 国产美女被遭强高潮免费网站| 国产一区电影| 羞羞视频在线观看免费| 免费国产视频| 国产成在线观看免费视频| 精品久久亚洲一级α| 依依成人在线| 资源视频在线播放免费| 一级二级三级在线观看| 成人午夜无人区一区二区| 国产成人综合亚洲欧美在| 亚洲精品自拍区在线观看| 黄色av网址在线免费观看| 影音先锋中文字幕在线| 午夜在线小视频| 中文视频在线| 国产精品剧情一区二区在线观看 | 国产丝袜在线观看视频| 亚洲欧美精选| 国产黄色大片在线观看| 日本动漫同人动漫在线观看| 国产激情网址| 国产精品视频流白浆免费视频 | 亚洲视频手机在线观看| 中文字幕在线免费观看| 免费精品国产自产拍观看| 精品国产免费观看一区| 综合蜜桃精品| 男人天堂网在线观看| 91社区在线观看| 国产精品777一区二区| 最近中文字幕av免费高清| 黄色av网站在线| 人人在线视频| 嫩草在线播放| 九色视频网站| 福利视频在线看| 黄色网址在线免费播放| 九九精品九九| 黄网址在线永久免费观看| 日本不卡视频一区二区| 欧美婷婷久久五月精品三区| 日本不卡影院| 麻豆视频国产| √天堂中文在线| 国产精品白浆视频免费观看| 国产成人精品自线拍| 精品国产免费第一区二区| 伊人久久青青草| 亚洲91av| 国产美女在线播放| 国产经典三级在线| 日本视频三区| 国产一级电影网| 精品国产免费第一区二区| 青青草免费在线视频| 天堂资源在线中文| 夜色资源网av在先锋网站观看| www免费在线观看视频| 青娱乐在线视频观看| 欧美日韩国产亚洲沙发| 国产精品一区二区资源| 中文字幕av高清| 在线免费看黄网站| 国产69精品久久久久孕妇国产69久久| 国产无套粉嫩白浆在线2022年 | 国产激情自拍视频| www在线观看播放免费视频日本| 黄色电影网站在线观看| 国产午夜视频| 欧美xxxx黑人又粗又长| 国产三级自拍| 日本在线免费中文字幕| 国产娇喘精品一区二区三区图片| heisi视频网在线观看| 国产精品国精产品一二| 九九精品九九| 亚洲最新永久观看在线| 国产无遮挡又黄又爽免费软件| 超碰97在线免费观看| 2019年中文字幕| 国产性一级片| 91sp网站在线观看入口| 青青草原av在线| av二区三区| 国产aa视频| 国产视频一二三区| 欧美韩日国产| 热99re久久精品这里都是免费| 中文乱码字幕高清在线观看| 国产日韩欧美精品一区二区三区 | 亚洲夜夜综合| 精品国产一区二区三区不卡在线| √天堂中文在线| 日本中文字幕高清视频| 国产主播福利在线| 高清视频一区二区三区四区| 超碰免费在线观看| 交视频在线观看国产| 就爱干草视频| 先锋av资源网| 日本一卡二卡四卡精品| 亚洲日本一区二区三区在线观看| 国产福利资源| 亚洲高清在线免费| 欧美日韩亚洲国内综合网| 激情在线视频播放| 尤物网址在线观看| 国产系列电影在线播放网址| 国产视频97| 91看片在线观看| 在线视频三级| 日本不卡视频一区二区| 国产卡一卡二卡三| 国产黄色高清在线| 国产成人综合亚洲欧美在| 在线观看av中文| 牛牛精品视频在线| 国产美女视频一区二区三区| 国产一二三区在线视频| 中文乱码字幕高清在线观看| 亚洲精品乱码电影在线观看| 国产在线一二三| 国产成人精品久久一区二区小说| av在线1区2区| 国产一区电影| 先锋影音av中文字幕| 中文字幕国产在线| 亚洲成a人v欧美综合天堂麻豆| 国产免费麻豆视频| 国产极品嫩模在线视频一区| 就爱干草视频| 91资源在线观看| 国产免费人人看| 天天插天天色|