1. 程式人生 > 其它 >JSP使用者登入(隨機驗證碼版)

JSP使用者登入(隨機驗證碼版)

簡介:

使用者輸入使用者名稱、密碼和驗證碼,識別成功則登入,失敗則返回登入頁面並提示錯誤資訊。

登入案例的程式碼請參考:https://www.cnblogs.com/0099-ymsml/p/16175101.html

生成隨機驗證碼的類請參考:https://www.cnblogs.com/0099-ymsml/p/16179879.html

CodeServlet: 獲取驗證碼的文字資訊

package demoServlet;

import java.awt.image.BufferedImage;
import java.io.IOException;
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 demoClass.Verify; @WebServlet("/CodeServlet") public class CodeServlet extends
HttpServlet { private Verify vc = new Verify(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /** * 生成圖片 * 儲存圖片上的文字到session中 * 把圖片響應給客戶端 */ BufferedImage image = vc.getImage(); //
獲取一張圖片的流 // 將圖片的文字儲存到session中 String text = vc.getText(); HttpSession session = request.getSession(); session.setAttribute("text", text); // 輸出流輸出圖片 Verify.output(image, response.getOutputStream()); } }

LoginServlet:登入資訊驗證

package demoServlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 設定編碼
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        // 獲取使用者名稱和密碼
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // 獲取驗證碼
        String code = request.getParameter("code");
        // 獲取session
        HttpSession session = request.getSession();
        // 獲取圖片文字
        String text = (String) session.getAttribute("text");
        // 校驗使用者名稱和密碼
        if ("cdml".equals(username)) { // 判斷使用者名稱
            if ("qwe".equals(password)) { // 判斷密碼
                if (!text.equalsIgnoreCase(code)) { // 驗證碼不正確
                    request.setAttribute("msg", "驗證碼錯誤"); // 記錄錯誤的驗證碼
                    request.getRequestDispatcher("/jsp/login.jsp").forward(request, response); // 返回登入頁面
                } else { // 當驗證碼正確
                    // 使用者名稱、密碼和驗證碼都正確,設定使用者名稱、密碼和驗證碼
                    session.setAttribute("username", username);
                    session.setAttribute("password", password);
                    session.setAttribute("code", code);
                    // 設定Cookie
                    Cookie cookie = new Cookie("username", username);
                    cookie.setMaxAge(60 * 60 * 24); // cookie有效時間為一天
                    response.addCookie(cookie); // 新增cookie
                    response.sendRedirect("/day0422/jsp/source1.jsp"); // 重定向到source1.jsp
                }
            } else {
                // 設定錯誤密碼
                request.setAttribute("msg", "密碼錯誤");
                // 轉發
                request.getRequestDispatcher("/jsp/login.jsp").forward(request, response);
            }
        } else {
            // 設定錯誤使用者名稱
            request.setAttribute("msg", "使用者名稱錯誤");
            // 轉發
            request.getRequestDispatcher("/jsp/login.jsp").forward(request, response);
        }
    }
}

login.jsp:登入頁面

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登入</title>
</head>
<body>
<%    
    String err = "";
    String msg = (String)request.getAttribute("msg");
    if (msg!=null){
        err = msg;
    }
%>
<div align="center">
<font color="red"><b><%=err %></b></font>
    <form action="/day0422/LoginServlet" method="post">
    使用者名稱:<input type="text" name="username" value=<%=session.getAttribute("username") %>><br/>
    密碼  :<input type="text" name="password" value=<%=session.getAttribute("password") %>><br/>
    請輸入:<input type="text" name="code" size="3">
    <img src="/day0422/CodeServlet">
    <br/>
    <input type="submit" value="登入">
    </form>
</div>
</body>
</html>

source1.jsp:登入成功頁面

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
<h1>驗證成功!</h1>
<b>使用者:<%=request.getSession().getAttribute("username") %></b>
<b>您的密碼為:<%=request.getSession().getAttribute("password") %></b>
<b>您的驗證碼為:<%=request.getSession().getAttribute("code") %></b>
</body>
</html>

訪問login.jsp頁面

 

 訪問成功並跳轉到source1.jsp

 

 如果驗證碼不匹配(上面驗證碼識別不區分大小寫):