1. 程式人生 > 其它 >登入驗證碼 session

登入驗證碼 session

工具類在另一文章中有展示。

login.jsp

 1 <%--
 2   Created by IntelliJ IDEA.
 3   User: 28763
 4   Date: 2021/8/3
 5   Time: 19:55
 6   To change this template use File | Settings | File Templates.
 7 --%>
 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 9 <html>
10 <script>
11
window.onload = function (){ 12 var img = document.getElementById("img"); 13 img.onclick = function (){ 14 var date = new Date().getTime(); 15 img.src= "/ServletCheckCode?" +date; 16 } 17 } 18 </script> 19 <head> 20 <title>Login</title> 21
</head> 22 <body> 23 <form action="/ServletLogin" method="post"> 24 <table> 25 <tr> 26 <td>使用者名稱:</td> 27 <td><input type="text" name="username"></td> 28 </tr> 29 <tr> 30
<td>密 碼:</td> 31 <td><input type="text" name="password"></td> 32 </tr> 33 <tr> 34 <td>驗證碼:</td> 35 <td><input type="text" name="checkCode"></td> 36 </tr> 37 <tr> 38 <td colspan="10"><img id="img" src="/ServletCheckCode?" +date></td> 39 </tr> 40 <tr> 41 <td colspan="10"><input type="submit" value="登入"></td> 42 </tr> 43 </table> 44 </form> 45 <%= 46 request.getAttribute("cc_error") == null ? "":request.getAttribute("cc_error") 47 %> 48 <%= 49 request.getAttribute("login_error") == null ? "":request.getAttribute("login_error") 50 %> 51 </body> 52 </html>

ServletLogin.java

 1 package cn.rongxinrou.web.login;
 2 
 3 import org.apache.commons.beanutils2.BeanUtils;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import javax.servlet.http.HttpSession;
10 import java.io.IOException;
11 import java.lang.reflect.InvocationTargetException;
12 import java.util.Map;
13 
14 
15 @WebServlet("/ServletLogin")
16 public class ServletLogin extends HttpServlet {
17     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
18         request.setCharacterEncoding("utf-8");
19         Map<String, String[]> map = request.getParameterMap();
20         User user = new User();
21         UserDao userDao = new UserDao();
22         try {
23             BeanUtils.populate(user,map);
24         } catch (IllegalAccessException e) {
25             e.printStackTrace();
26         } catch (InvocationTargetException e) {
27             e.printStackTrace();
28         }
29         HttpSession session = request.getSession();
30         String checkSession = (String) session.getAttribute("checkSession");
31         session.removeAttribute("checkSession");
32         if (checkSession != null && checkSession.equalsIgnoreCase(user.getCheckCode())){
33                if (userDao.login(user) == null){
34                    request.setAttribute("login_error","使用者名稱或密碼錯誤");
35                    request.getRequestDispatcher("/login.jsp").forward(request,response);
36                }else {
37                    session.setAttribute("user",user);
38                    response.sendRedirect(request.getContextPath() + "/Success.jsp");
39                }
40         }else {
41             request.setAttribute("cc_error","驗證碼錯誤");
42             request.getRequestDispatcher("/login.jsp").forward(request,response);
43         }
44     }
45 
46     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
47 
48     }
49 }

checkcode

package cn.rongxinrou.web.login;

import javax.imageio.ImageIO;
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 java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

@WebServlet("/ServletCheckCode")
public class ServletCheckCode extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int width = 100;
        int height = 30;
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);

        Graphics g = image.getGraphics();
        g.setColor(Color.GREEN);
        g.fillRect(0,0,width-1,height-1);

        g.setColor(Color.BLUE);
        g.drawRect(0,0,width-1,height-1);

        String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= 4; i++) {
            int index = random.nextInt(str.length());
            char c = str.charAt(index);
            sb.append(c);
            g.drawString(c+" ",width/5*i,height/2);
        }
        String s = sb.toString();
        request.getSession().setAttribute("checkSession",s);

        g.setColor(Color.BLUE);
        for (int i = 0; i < 8; i++) {
            int x1 = random.nextInt(width);
            int x2 = random.nextInt(width);
            int y1 = random.nextInt(height);
            int y2 = random.nextInt(height);
            g.drawLine(x1,x2,y1,y2);
        }
        ImageIO.write(image,"jpg",response.getOutputStream());
    }
}

success.jsp

 1 <%@ page import="cn.rongxinrou.web.login.User" %><%--
 2   Created by IntelliJ IDEA.
 3   User: 28763
 4   Date: 2021/8/4
 5   Time: 16:17
 6   To change this template use File | Settings | File Templates.
 7 --%>
 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 9 <html>
10 <head>
11     <title>Success</title>
12 </head>
13 <body>
14 <%
15     User user = (User) session.getAttribute("user");
16     out.write(user.getUsername()+"歡迎你");
17 %>
18 </body>
19 </html>