生成验证码的基本过程是:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.awt.*,java.awt.image.BufferedImage,javax.imageio.ImageIO" %><%response.setHeader("Cache-Control", "no-cache");int width=60,height=20;<!--实例化bufferdImage对象-->BufferedImage image=new BufferedImage( width,height,BufferedImage.TYPE_INT_RGB);//由bufferdImage对象获得画笔gGraphics g=image.getGraphics();//画笔填充矩形g.setColor(new Color(200,200,200));g.fillRect(0, 0, width, height);//生成随机数Random rd=new Random();int rdNum=rd.nextInt(8999)+1000;String rdstr=String.valueOf(rdNum);//把随机数放入session中session.setAttribute("rdStr", rdstr);//画笔g画随机数g.setColor(Color.BLUE);g.setFont(new Font("",Font.PLAIN,20));g.drawString(rdstr, 10, 20);//这里的坐标是一个字符的左下角基线   //画100个随机点g.setColor(Color.green);for(int i=0;i<100;i++){int x=rd.nextInt(width);int y=rd.nextInt(height);g.drawOval(x, y, 1, 1);}//用ImageIO的静态函数write输出图像ImageIO.write(image, "JPEG", response.getOutputStream());out.clear();out=pageContext.popBody(); %>

画图的基本思想是:

<!--loginform.jsp登录jsp-->
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>">    <title>My JSP 'loginform.jsp' starting page</title>   <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head> <body><script type="text/javascript">function refresh(){                document.loginform.imgcode.src="codes.jsp";}</script>    <form name="loginform" action="/code/servlets/codeServlet" method="post"><h4 align="center"><b>欢迎登陆</b></h4><br>         <table align="center" border="1"><tr><td align="right">请输入账号:</td><td><input name="zhanghao" type="text" > </td></tr><tr><td align="right">请输入密码:</td><td><input name="mima" type="password" size="21" > </td></tr><tr><td align="right">请输入验证码:</td><td ><input name="yanzhengma" type="text" size="10" ><img  name="imgcode" src="codes.jsp" onclick="refresh()"> </td><!--验证码当图片处理,点击可刷新--></tr><tr><td></td><td><input type="submit" value="登录" > <input type="button" value="忘记密码?"></td></tr></table>          </form></body>
</html>

<!--codeServlet.java-->
package servlets;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class codeServlet extends HttpServlet {/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.* * @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//获取表单的验证码String code=request.getParameter("yanzhengma");//获取session中的验证码HttpSession session=request.getSession();String randstr=(String) session.getAttribute("rdStr");response.setCharacterEncoding("gb2312");//respons设为中文编码PrintWriter out=response.getWriter();//获得输出写出器if(code.equals(randstr)){//输入的验证码和session保存的验证码相比较out.println("恭喜你,验证码正确!");         }else{                //response.sendRedirect("/code/back.jsp");out.println("验证码错误!!");}          }
}

输入结果是:

JSP+servlet生成验证码并验证相关推荐

  1. jsp页面生成验证码且验证

    一般先写出验证码,利用java语言写出(后台或者前台写,前台jsp还是用<% %>包java语句写出) 然后登陆页面用img的src引入验证码的方法,比如: <img src=&qu ...

  2. 转: 通过Servlet生成验证码图片

    孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)-- 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedIma ...

  3. 基于 JSP + Servlet 的用户登录验证

    综合案例--基于 JSP + Servlet 的用户登录验证 [例6-1] 实现一个简单的用户登录验证程序,如果用户名是 abc ,密码是 123,则显示欢迎用户的信息,否则显示"用户名或密 ...

  4. Java Web学习总结(6)——通过Servlet生成验证码图片

    2019独角兽企业重金招聘Python工程师标准>>> 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawIma ...

  5. javaweb学习总结(九):通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl.r ...

  6. 通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 package gacl.res ...

  7. 通过Servlet生成验证码图片 (转孤傲苍狼)

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl.r ...

  8. javaweb(九)—— 通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl.r ...

  9. avaweb学习总结(九)—— 通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl.r ...

最新文章

  1. 光流(Optical Flow)简介
  2. 第一讲,Python的安装(干货)
  3. 第三次学JAVA再学不好就吃翔(part76)--Collection类
  4. Android5.1权限问题解决
  5. 基于Python的SVM算法深入研究
  6. 消息中间件—RocketMQ的RPC通信(一)
  7. Python深度学习:常见优化算法
  8. Python3制作百度文库免费下载器
  9. voip语音中转服务器,基于VoIP的语音应用服务器的设计与实现
  10. bmc156 linux驱动源码,BMC156 BOSCH博世 加速+电子罗盘 全新电子罗盘传感器 只做原装...
  11. 从零开始学51单片机
  12. c语言 long int最大数,long整型的最大值跟处理器位数有关
  13. 布莱克曼哈尔窗matlab,基于matlab的布莱克曼窗函数法设计的低通滤波器
  14. 鉴源丨车载ECU嵌入式设备的诊断测试 - 会话和安全控制
  15. 域名可以修改绑定的服务器么,域名备案绑定的服务器可以改么
  16. 2022-2027年中国卫星遥感市场竞争态势及行业投资前景预测报告
  17. 讨伐Cucumber行为驱动
  18. 怎么把ogg音乐格式转换成mp3
  19. 2048小游戏HTML网页版源码共享
  20. java category类_Category(类别)

热门文章

  1. misc_register、 register_chrdev 的区别总结
  2. Windows下使用IDEA+Maven搭建本地Hadoop环境
  3. C++ Primer 5th笔记(chap 16 模板和泛型编程)转发参数包
  4. C++ Primer 5th笔记(7)chapter7 类:编译相关
  5. 软件质量保证与测试——Ad hoc Test
  6. ATF(TF-A)的编译方法
  7. 13-SDEI: Software Delegated Exception Interface
  8. java IO流用法
  9. JAVA_IO流四大家族(2)
  10. python实现维吉尼亚加密法