案例需求:
访问带有验证码的登录页面login.jsp
用户输入用户户名和密码以及验证码。
* 如果用户名和密码输入有误,跳转登录页面,
提示用户名或者密码错误
*如果验证码输入有误,跳转登录页面,
提示:验证码错误
*如果输入全部正确,则转跳到主页success.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 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 package com.web.servlet;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 ("/checkCodeServlet" )public class CheckCodeServlet extends HttpServlet { @Override protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int width = 100 ; int height = 50 ; BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics g = image.getGraphics(); g.setColor(Color.PINK); g.fillRect(0 ,0 ,width,height); g.setColor(Color.BLUE); g.drawRect(0 ,0 ,width - 1 ,height - 1 ); String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789" ; Random ran = new Random(); StringBuilder sb = new StringBuilder(); for (int i = 1 ; i <= 4 ; i++) { int index = ran.nextInt(str.length()); char ch = str.charAt(index); sb.append(ch); g.drawString(ch+"" ,width/5 *i,height/2 ); } String checkCode_session = sb.toString(); request.getSession().setAttribute("checkCode_session" ,checkCode_session); g.setColor(Color.GREEN); for (int i = 0 ; i < 10 ; i++) { int x1 = ran.nextInt(width); int x2 = ran.nextInt(width); int y1 = ran.nextInt(height); int y2 = ran.nextInt(height); g.drawLine(x1,y1,x2,y2); } ImageIO.write(image,"jpg" ,response.getOutputStream()); } @Override protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this .doPost(request,response); } }
登陆代码 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 package com.web.servlet;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 java.io.IOException;@WebServlet ("/loginServlet" )public class LoginServlet extends HttpServlet { @Override protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8" ); String username = request.getParameter("username" ); String password = request.getParameter("password" ); String checkCode = request.getParameter("checkCode" ); HttpSession session = request.getSession(); String checkCode_session = (String) session.getAttribute("checkCode_session" ); session.removeAttribute("checkCode_session" ); if (checkCode_session!= null &&checkCode_session.equalsIgnoreCase(checkCode)){ if ("zhansan" .equals(username)&&"123" .equals(password)){ session.setAttribute("user" ,username); response.sendRedirect(request.getContextPath()+"/success.jsp" ); }else { request.setAttribute("login_error" ,"用户名或密码错误" ); request.getRequestDispatcher("/login.jsp" ).forward(request,response); } }else { request.setAttribute("cc_error" ,"验证码错误" ); request.getRequestDispatcher("/login.jsp" ).forward(request,response); } } @Override protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this .doPost(request, response); } }
登陆页面代码 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 <%-- Created by IntelliJ IDEA. User: OldAZ-PC Date: 2020 /9 /3 Time: 16:30 To change this template use File | Settings | File Templates. -- %><%@ page contentType ="text/html;charset=UTF-8" language ="java" %> <html > <head > <title > login</title > <script > window .onload = function ( ) { document .getElementById("img" ).onclick = function ( ) { this .src = "/4_Cookie_Session_war_exploded/checkCodeServlet?date=" +new Date ().getTime(); } } </script > <style > div{ color: red; } </style > </head > <body > <form action ="loginServlet" method ="post" > <table > <tr > <td > 用户名</td > <td > <input type ="text" name ="username" > </td > </tr > <tr > <td > 密码</td > <td > <input type =password name ="password" > </td > </tr > <tr > <td > 验证码</td > <td > <input type ="text" name ="checkCode" > </td > </tr > <tr > <td colspan ="2" > <img id ="img" src ="/4_Cookie_Session_war_exploded/checkCodeServlet" > </td > </tr > <tr > <td colspan ="2" > <input type ="submit" value ="登录" > </td > </tr > </table > </form > <div > <%=request.getAttribute("cc_error")==null?"":request.getAttribute("cc_error")% > </div > <div > <%=request.getAttribute("login_error")==null?"":request.getAttribute("login_error")% > </div > </body > </html >
登录成功页面 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <%-- Created by IntelliJ IDEA. User: OldAZ-PC Date: 2020 /9 /3 Time: 19 :05 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1><%=request.getSession().getAttribute("user") %>,欢迎您!!</h1> </body> </html>
<
Java EE页显示技术之JSP
JavaEE会话技术之Session
>