Loading

登录验证码 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>
posted @ 2021-08-04 19:05  Yann的日常笔记  阅读(118)  评论(0)    收藏  举报