JavaWeb图形验证码

需要用到一个 jar 包 

Jar包链接:https://pan.baidu.com/s/1ZvSAn_vjrYq_IuScCU3G_w      密码:9fnb

创建一个生成验证码图片的servlet  主要在35-45行!

 1 package com.it.Servlet;
 2 
 3 import java.io.IOException;
 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 
10 
11 import cn.hutool.captcha.CaptchaUtil;
12 import cn.hutool.captcha.LineCaptcha;
13 
14 /**
15  * Servlet implementation class AutoCodeServlet
16  */
17 @WebServlet("/AutoCodeServlet")
18 public class AutoCodeServlet extends HttpServlet {
19     private static final long serialVersionUID = 1L;
20        
21     /**
22      * @see HttpServlet#HttpServlet()
23      */
24     public AutoCodeServlet() {
25         super();
26         // TODO Auto-generated constructor stub
27     }
28 
29     /**
30      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
31      */
32     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
33         // TODO Auto-generated method stub
34         
35         //创建一个宽度 200 高度 100的图形验证码
36         LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
37         
38         //得到生成的验证码字符
39         String code=lineCaptcha.getCode();
40         
41         //将验证码写到会话中
42         request.getSession().setAttribute("cod", code);
43         
44         //response进行输出
45         lineCaptcha.write(response.getOutputStream());
46         
47     }
48 
49     /**
50      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
51      */
52     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
53         // TODO Auto-generated method stub
54         doGet(request, response);
55     }
56 
57 }

创建判断判断验证码的servlet

 1 package com.it.Servlet;
 2 
 3 import java.io.IOException;
 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 
10 /**
11  * Servlet implementation class LogServlet
12  */
13 @WebServlet("/LogServlet")
14 public class LogServlet extends HttpServlet {
15     private static final long serialVersionUID = 1L;
16        
17     /**
18      * @see HttpServlet#HttpServlet()
19      */
20     public LogServlet() {
21         super();
22         // TODO Auto-generated constructor stub
23     }
24 
25     /**
26      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
27      */
28     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
29         // TODO Auto-generated method stub
30         
31         //得到生成的验证码字符
32         String oldcode=(String) request.getSession().getAttribute("cod");
33         
34         //得到用户输入的验证码
35         String code=request.getParameter("c");
36         
37         //两个验证码进行判断
38         if(!oldcode.equals(code)) {
39             request.setAttribute("cde", "验证码错误!");
40             request.getRequestDispatcher("index.jsp").forward(request, response);
41         }
42         
43         //得到账号 
44         String name=request.getParameter("u");
45         
46         //得到密码
47         String pwd=request.getParameter("p");
48         
49         //判断账号和密码是否成功 成功进行页面跳转
50         if(name.equals("admin")&&pwd.equals("admin")) {
51             response.sendRedirect("logsu.jsp");
52         }
53     }
54 
55     /**
56      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
57      */
58     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
59         // TODO Auto-generated method stub
60         doGet(request, response);
61     }
62 
63 }

创建一个登入的jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 <script type="text/javascript">
10 function changcode(){
11     //点击图片改变验证码
12     /* document.getElementByID("uimg").src; */  //这句话的结果是AutoCodeServlet
13     //给AutoCodeServlet 传一个时间的参数  然后点击是改变验证码
14     document.getElementById("uimg").src=document.getElementById("uimg").src+"?time="+new Date().getTime();
15 }
16 
17 function login(){
18     //点登入
19     
20     //获取账号 密码 验证码
21     var name=document.getElementById("uname").value;
22     var pwd=document.getElementById("upass").value;
23     var code=document.getElementById("ucode").value;
24     location.href="LogServlet?u="+name+"&p="+pwd+"&c="+code;
25 }
26 </script>
27 
28 <style type="text/css">
29 .md{
30 width:300px;
31 height:500px;
32 margin:0px auto;
33 margin-top:200px;
34 }
35 #log{
36 margin-left:50px;
37 }
38 </style>
39 </head>
40 <body>
41 <div class="md">
42 <input type="text" id="uname"/><br><br>
43 <input type="password" id="upass"/><br><br>
44 <input type="text" id="ucode"/><img alt="验证码" src="AutoCodeServlet" id="uimg" onclick="changcode()"><br><br>
45 <span><c:out value="${cde }"></c:out></span>
46 <input type="submit" value="登入" id="log" onclick="login()"/>
47 </div>
48 </body>
49 </html>

创建一个登入成功后跳转的jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <h1>欢迎加入!</h1>
11 </body>
12 </html>

 效果:

原文地址:https://www.cnblogs.com/xyhghy/p/14695346.html