案例需求: 
访问带有验证码的登录页面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
      >