登入驗證碼 session
阿新 • • 發佈:2021-08-04
工具類在另一文章中有展示。
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> 11window.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>