亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

jsp網頁登陸驗證

2024-09-05 00:22:46
字體:
來源:轉載
供稿:網友

jsp登陸驗證,網頁登陸驗證帶驗證碼校驗,登錄功能之添加驗證碼

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 {    /**    * 單元測試,試一下能不能自動生成驗證碼圖片    */   // 這個函數是單元測試時使用的,這里private一下外面就調用不到了;   /* @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();     }      // 將隨機生成的文本內容輸出到控制臺,用于校驗     System.out.println(vc.getText());   }    private int w = 70;// 寬   private int h = 35;// 高   private String text;// 文本內容(驗證碼字符串)   private Random r = new Random();   private String[] fontNames = { "宋體", "華文楷體", "黑體", "微軟雅黑", "楷體_GB2312" };   // 隨機字符集合中不包括0和o,O,1和l,因為這些不易區分   private String codes = "23456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYXZ";   // 驗證碼圖片的背景色:白色   private Color bgColor = new Color(255, 255, 255);    /**    * 返回一個驗證碼圖片buffer對象:BufferedImage    */   public BufferedImage getImage() {     BufferedImage image = createImage();     // 獲取繪圖環境(畫筆工具)     Graphics2D g2 = (Graphics2D) image.getGraphics();     // sb : 用來保存驗證碼字符串文本內容     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();// 記錄驗證碼文本內容     drawLine(image);// 畫干擾線     return image;    }    /**    * @return 獲取驗證碼文本內容    */   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");      //添加一個請求參數a是因為,通常瀏覽器都有緩存,點擊換一張的時候沒反應,所以加一個請求參數,獲取當前請求時間,可以精確到毫秒,所以每次請求的參數都不同,所以瀏覽器有緩存也不妨礙;     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) {       //如果在本次會話已經登陸,直接重定向到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.同時獲取驗證碼中的文本內容,并放到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為空值,說明不是通過正常渠道來的,轉發到Login頁面;       request.setAttribute("fdbkMsg", "別想走后門進來,趕緊登錄!");       request.getRequestDispatcher("/LOGIN-DEMO/Login.jsp").forward(           request, response);     }   %>    <body>     <br>     <%=username%>已經成功登陸。     <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", "呵呵嗒,這里是你來的地方嗎?快登陸!");       //轉發到登錄界面:       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> 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美国产精品日韩| 视频直播国产精品| 97激碰免费视频| 日韩精品在线观看网站| 在线成人中文字幕| 国产精品久久久久久久久久东京| 国产一区二区三区视频在线观看| 91香蕉嫩草影院入口| 日韩精品一区二区三区第95| 国产精品久久久久9999| 热久久99这里有精品| 国产精品美女www| 国产精品极品美女粉嫩高清在线| 91免费看片网站| 久久99精品久久久久久琪琪| 欧美亚洲日本网站| 91爱视频在线| 人人做人人澡人人爽欧美| 欧洲成人免费aa| 欧洲日本亚洲国产区| 国产精品视频区1| 久久6免费高清热精品| 日韩在线欧美在线| 精品久久久久久中文字幕大豆网| 秋霞午夜一区二区| 97在线精品国自产拍中文| 亚洲最大福利网| 性视频1819p久久| 欧美激情高清视频| 在线播放精品一区二区三区| 欧美视频一区二区三区…| 欧美极品欧美精品欧美视频| 亚洲天堂av在线免费| 亚洲女性裸体视频| 亚洲成人av片在线观看| 欧美在线视频免费| 国产一区二区三区网站| 这里只有精品久久| 国产精品99久久久久久白浆小说| 国产精品久久久久久搜索| 亚洲国产精品成人一区二区| 国产97在线观看| 黑人巨大精品欧美一区二区三区| 国产精品日韩久久久久| 国产精品av在线播放| 日韩国产欧美区| 色与欲影视天天看综合网| 成人av资源在线播放| 国产成人自拍视频在线观看| 日本久久久久久久久| 国产热re99久久6国产精品| 午夜精品福利电影| 欧美另类交人妖| 91久久精品日日躁夜夜躁国产| 成人网欧美在线视频| 精品国产成人在线| 丝袜美腿亚洲一区二区| 日韩欧美精品免费在线| 91成人福利在线| 亚洲精品国产综合久久| 欧美日韩亚洲系列| 日韩美女主播视频| 91精品啪aⅴ在线观看国产| 国产亚洲成av人片在线观看桃| 久久精品99久久久香蕉| 国产成人精品国内自产拍免费看| 国产精品视频久久久久| 久久91精品国产91久久久| 91精品免费久久久久久久久| 国产欧美一区二区三区久久| 日韩av片免费在线观看| 欧美在线免费看| 日本精品免费观看| 国内精品小视频| 色综合久久天天综线观看| 欧美大胆在线视频| 国产欧美精品日韩| 国产精品久久久久久久久久东京| 国产精品色视频| 国产精品中文字幕在线| 2019日本中文字幕| 精品亚洲国产视频| 久久久最新网址| 成人乱人伦精品视频在线观看| 色老头一区二区三区在线观看| 欧美激情一二区| 欧美插天视频在线播放| 亚洲精品国精品久久99热| 中文字幕亚洲一区二区三区| 国产欧美在线播放| 尤物yw午夜国产精品视频| 欧美高清理论片| 亚洲偷欧美偷国内偷| 日韩av中文字幕在线播放| 欧洲成人免费视频| 欧美激情在线一区| 色综合久综合久久综合久鬼88| 欧美国产日韩二区| 精品调教chinesegay| 久久综合色影院| 久久777国产线看观看精品| 亚洲精品99久久久久中文字幕| 97视频在线观看网址| 久久久久久免费精品| 久久久女人电视剧免费播放下载| 一本色道久久综合狠狠躁篇怎么玩| 久久九九全国免费精品观看| 国产精品色视频| 欧美激情中文字幕乱码免费| 欧美性极品少妇精品网站| 欧美日韩亚洲成人| 久色乳综合思思在线视频| 人人爽久久涩噜噜噜网站| 91久久国产婷婷一区二区| 久久久久北条麻妃免费看| 91a在线视频| 国产精品自产拍高潮在线观看| 91精品久久久久久久久久入口| 亚洲国产精品推荐| 91色视频在线观看| 91国内产香蕉| 国产日韩亚洲欧美| 97视频在线观看亚洲| 久久影视三级福利片| 亚洲久久久久久久久久久| 亚洲欧美中文字幕在线一区| 成人啪啪免费看| 日韩成人xxxx| 91免费版网站入口| 欧美性高跟鞋xxxxhd| xvideos亚洲人网站| zzijzzij亚洲日本成熟少妇| 色yeye香蕉凹凸一区二区av| 亚洲深夜福利在线| 亚洲电影免费在线观看| 97久久精品国产| 亚洲精品视频二区| 一区二区三区动漫| 久久精品美女视频网站| 日韩免费在线观看视频| 亚洲欧洲高清在线| 欧美日韩亚洲一区二区| 国产成人精品最新| 国产精品一区二区久久久久| 亚洲午夜精品久久久久久久久久久久| 久久久久国色av免费观看性色| 久久91亚洲精品中文字幕| 国内成人精品一区| 国产成人精品久久二区二区| 2019中文字幕在线免费观看| 国产日韩精品在线播放| 91午夜理伦私人影院| 亚洲女性裸体视频| 国产日韩精品入口| 国产一区二区色| 亚洲国产又黄又爽女人高潮的| 精品日本美女福利在线观看| 久久久精品欧美| 夜夜狂射影院欧美极品| 国产精品日日摸夜夜添夜夜av| 国产精品久久久久一区二区| 久久久久这里只有精品| 国产精品免费网站| 最近的2019中文字幕免费一页|