1. <strike id="voekh"><bdo id="voekh"></bdo></strike>
      <button id="voekh"><acronym id="voekh"></acronym></button>

      <s id="voekh"></s>

        <span id="voekh"></span>
      1. <li id="voekh"><acronym id="voekh"></acronym></li>
        <th id="voekh"></th>
        作家
        登錄

        jsp實現簡單圖片驗證碼功能

        作者: 來源: 2022-02-09 15:29:36 閱讀 我要評論

         本文實例為大家分享了jsp實現簡單圖片驗證碼的具體代碼,供大家參考,具體內容如下

        一、實現的功能分析

        (1)在登陸頁面加驗證碼的功能,起到一定的安全性。在輸入正確的驗證碼,用戶名和密碼的情況下,才可以實現登錄。
        (2)實現查詢數據庫的功能。在登陸后的頁面中,顯示用戶名和密碼,并且設置有一個超鏈接,實現查詢數據庫的功能。
        (3)代碼核心是:隨機生成驗證碼,并且顯示在頁面上。同時要和輸入框中的輸入驗證碼進行校驗。
        (4)主頁面使用img標簽的src屬性引入驗證頁面的jsp文件。
        (5)驗證碼的實現頁面使用BufferedImage類的方法產生圖片。
        (6)使用Graphics類的各種方法實現驗證碼的構成。

        二、代碼實現

        (1)登錄頁面:index.jsp文件。

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        <%@ page language="java" contentType="text/html; charset=utf-8"
            pageEncoding="utf-8"%>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        <title>登錄頁面</title>
        </head>
        <body>
        <form action="LoginServlet" method="post">
               用戶名:<input name="username" type="text" value=""/><br/><br/>
               密碼:<input name="password" type="password" value=""/><br/><br/>
                
                
                驗證碼: <input type="text" name="checkCode" height="20px " value=""/>
              <img src="CodeServlet"/><span>${error_code}</span><br/>
               <input type="submit" value="提交">
         
        </form>
        </body>
        </html>

        (2)登錄后的頁面:user.jsp文件。

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        <%@ page language="java" contentType="text/html; charset=utf-8"
            pageEncoding="utf-8"%>
        <%@  page import = "com.entity.Author"%>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        <title>顯示登錄用戶的用戶名和密碼頁面</title>
        </head>
        <body>
        <%  
            //內置對象
            request.setCharacterEncoding("utf-8");
            //獲取交互層放入session中的obj
            Author obj = (Author)session.getAttribute("authorInfo");
             
            if(obj != null){
                out.print("<p>用戶名:"+obj.getName()+"</p>");
                out.print("<p>密碼:"+obj.getId()+"</p>");
            }
            else{
                response.sendRedirect("index.jsp");
            }
        %>
        <br/>
        <a href="AuthorServlet">用戶信息查詢 </a>
        </body>
        </html>

        (3)實現數據查詢頁面:ueslist.jsp文件。

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        <%@ page language="java" contentType="text/html; charset=utf-8"
            pageEncoding="utf-8"%>
        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="utf-8">
        <title>查詢信息顯示頁面</title>
        </head>
        <body>
        <table border="1">
          <tr>
                 <td>編號</td>
                 <td>名稱</td>
                 <td>價格</td>
                 <td>數量</td>
                 <td>日期</td>
                 <td>風格</td>
          </tr>
           
           <c:forEach items="${authorList}" var="author">
          <tr>
            <td>${author.id}</td>
            <td>${author.name }</td>
            <td>${author.price }</td>
            <td>${author.num }</td>
            <td>${author.dates}</td>
            <td>${author.style}</td>
          </tr>
          </c:forEach>
        </table>
        </body>
        </html>

        (4)定義一個Author類,用于接收數據庫中的元素。

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        package com.entity;
        //用于獲取數據庫中的元素對象
        public class Author {
            private int id;
            private String name;
            private int price ;
            private int num;
            private String dates;
            private String style;
            public int getId() {
                return id;
            }
            public void setId(int id) {
                this.id = id;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public int getPrice() {
                return price;
            }
            public void setPrice(int price) {
                this.price = price;
            }
            public int getNum() {
                return num;
            }
            public void setNum(int num) {
                this.num = num;
            }
            public String getDates() {
                return dates;
            }
            public void setDates(String dates) {
                this.dates = dates;
            }
            public String getStyle() {
                return style;
            }
            public void setStyle(String style) {
                this.style = style;
            }
         
        }

        (5)登錄頁面的交互層:LoginServlet.java文件。用于登錄檢驗和驗證碼匹配。

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        55
        56
        57
        58
        59
        60
        61
        62
        63
        64
        65
        66
        67
        68
        69
        70
        71
        72
        73
        74
        75
        76
        77
        78
        79
        80
        81
        82
        83
        84
        85
        86
        87
        88
        89
        90
        //交互層(客戶端和服務器的交互)
        package com.servlet;
         
        import java.io.IOException;
        import java.sql.SQLException;
         
        import javax.servlet.ServletException;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import javax.servlet.http.HttpSession;
         
        import com.dao.AuthorDao;
        import com.entity.Author;
         
        /**
         * Servlet implementation class LoginServlet
         */
        @WebServlet("/LoginServlet")
        public class LoginServlet extends HttpServlet {
            private static final long serialVersionUID = 1L;
                
            /**
             * @see HttpServlet#HttpServlet()
             */
            public LoginServlet() {
                super();
                // TODO Auto-generated constructor stub
            }
         
            /**
             * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
             */
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws  ServletException, IOException {
                // TODO Auto-generated method stub
                //內置對象request,response
                request.setCharacterEncoding("utf-8");
                 
                HttpSession session = request.getSession();
                 
                //獲取用戶輸入驗證碼
                String checkCode = request.getParameter("checkCode");
                //獲取session中的驗證碼,也就是CodeServlet中生成的四個字符
                String sessionCode = (String)session.getAttribute("sCode");
                 
                 
                //驗證碼正確
                if(checkCode.equals(sessionCode)) {
                    //獲取表單數據
                    String username = request.getParameter("username");
                    int password = Integer.valueOf(request.getParameter("password"));
                     
                    //判斷用戶信息是否正確,查詢數據庫獲取用戶信息
                     AuthorDao ad = new AuthorDao();
                     Author obj = ad.check(username, password);
                      
                     //判斷
                     if(obj != null) {
                          
                         //重新放入用戶信息
                    //     HttpSession session = request.getSession();
                         session.setAttribute("authorInfo", obj);
                         //設置session的有效期為10秒
                         session.setMaxInactiveInterval(10);
                          
                         //頁面轉發
                         response.sendRedirect("user.jsp");
                     }
                     else {
                          
                         //頁面重定向到登錄頁面
                         response.sendRedirect("index.jsp");
                     }
                }
                else {
                    //驗證碼不正確
                    request.setAttribute("error_code", "驗證碼不匹配");
                    request.getRequestDispatcher("index.jsp").forward(request, response);
                }