Servlet验证码功能

创建验证码生成Servlet

package com.pc.verifycode;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class VerifyServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 使用java图形界面技术绘制一张图片int charNum = 4;int width = 20 * 4;int height = 28;// 1. 创建一张内存图片BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 2.获得绘图对象Graphics graphics = bufferedImage.getGraphics();// 3、绘制背景颜色graphics.setColor(Color.YELLOW);graphics.fillRect(0, 0, width, height);// 4、绘制图片边框graphics.setColor(Color.GRAY);graphics.drawRect(0, 0, width - 1, height - 1);// 5、输出验证码内容graphics.setColor(Color.RED);graphics.setFont(new Font("宋体", Font.BOLD, 22));// 随机输出4个字符String s = "ABCDEFGHGKLMNPQRSTUVWXYZ23456789";Random random = new Random();// session中要用到String msg = "";int x = 5;for (int i = 0; i < charNum; i++) {int index = random.nextInt(32);String content = String.valueOf(s.charAt(index));msg += content;graphics.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255)));graphics.drawString(content, x, 22);x += 20;}// 6、绘制干扰线graphics.setColor(Color.GRAY);for (int i = 0; i < 5; i++) {int x1 = random.nextInt(width);int x2 = random.nextInt(width);int y1 = random.nextInt(height);int y2 = random.nextInt(height);graphics.drawLine(x1, y1, x2, y2);}// 释放资源graphics.dispose();// 图片输出 ImageIOImageIO.write(bufferedImage, "jpg", response.getOutputStream());}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}

修改web.xml

<servlet><servlet-name>VerifyServlet</servlet-name><servlet-class>com.pc.verifycode.VerifyServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>VerifyServlet</servlet-name><url-pattern>/VerifyServlet</url-pattern>
</servlet-mapping>

创建登录jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html><head><meta charset=utf-8"><title>Login</title></head><body><%-- 演示验证码功能 --%><form action="#" method="post">用户名:<input type="text" name="username" /><br /><br />密码:<input type="password" name="password" /><br /><br />验证码:<input type="text" name="verifyCode" /><img src="${pageContext.servletContext.contextPath }/VerifyServlet" id="verifyImg"><br /><input type="submit" value="登录" /></form></body>
</html>

head标签后加入js实现点击刷新验证码

    <!-- 引入jquery库 --><script type="text/javascript" src="${pageContext.servletContext.contextPath }/resource/js/jquery-1.11.0.js"></script><!-- 写一个验证码点击刷新功能 --><script type="text/javascript">$(function() {$("#verifyImg").click(function() {$(this).prop("src", "${pageContext.servletContext.contextPath }/VerifyServlet?t=" + new Date().getTime());});});</script>

PS:GitHub:https://github.com/Switch-vov/servlet-tools

Servlet验证码功能相关推荐

  1. java生成验证码实例_Java生成验证码功能实例代码

    页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...

  2. session实现验证码功能

    session实现验证码功能 1.  页面设计login.html <html> <head> <meta http-equiv="Content-Type&q ...

  3. javaweb实现验证码功能

    在javaweb的用户注册与登陆功能时,有时为了防止漏洞或者大量注册,可以使用验证码功能,下面是验证码的一个简单实现 验证码类 public class ValiImg extends HttpSer ...

  4. java输入验证码代码,JavaWeb 实现验证码功能(demo)

    验证码不用多说,在 WEB-APP 中一般应用于:登录.注册.买某票.秒杀等场景.大家都接触过~可以说是千奇百怪,各式各样. DEMO 目标功能 验证码页面输入. 页面更换验证码(异步实现). 后台验 ...

  5. springboot+vue实现手机验证码功能

    springboot+vue实现手机验证码功能 榛子云短信平台用户中心注册登录(有免费的一条消息,剩下的需要买)(阿里云个人得备案) 在springboot中加入依赖,用到了redis,阿里的fast ...

  6. 【途牛旅游项目】02 - 登录功能实现 - 验证码功能 - ajax实现登录

    文章目录 登录功能分析图解 最终实现截图 实现登录功能 1. 创建测试类 2. 创建业务层UserService 3. 创建实体类 - User用户类和Msg错误提示类 4. 创建dao层 5. 创建 ...

  7. SSM+MyBatis-Plus+EasyExcel+腾讯云tianai滑动验证码接入项目搭建+简单实现增、删、改、查、导入、滑动验证码功能

    SSM+MyBatis-Plus+EasyExcel+腾讯云&tianai滑动验证码接入项目搭建+简单实现增.删.改.查.导入.滑动验证码功能 文章末尾附源码 一.什么是SSM框架 SSM框架 ...

  8. 网页登录时验证码功能的实现

    网页登录时验证码功能的实现 在我们日常上网时,经常会遇到要登录的界面,我们会发现他会让你输入账号,密码外,还需要输入随机生成的验证码. 作用: 不少网站为了防止用户利用机器人自动注册.登录.灌水,都采 ...

  9. JavaWeb Servlet 登录功能 注销功能

    JavaWeb Servlet 登录功能 注销功能 有三个逻辑: 处理登陆的逻辑,用户主页的逻辑,退出登录逻辑 登陆的逻辑LoginServlet.java import java.io.IOExce ...

最新文章

  1. 卷积神经网络基础:(7)经典的网络架构
  2. 检测一组电动车电瓶好坏要多久?
  3. 优秀简历要遵循哪些规则
  4. 解决spring整合mybatis时错误 ‘org.mybatis.spring.mapper.MapperScannerConfigurer#0‘
  5. linux如何安装infer
  6. SoftGrid教程系列
  7. Vue学习笔记之04-computed计算属性
  8. 获取系统当前时间(精确到毫秒)
  9. Linux双网卡bonding举例
  10. 10款神奇的字符图案 amp; 词汇云生成工具
  11. Spring底层原理问题
  12. 只争朝夕,不负韶华,告别2019,开启2020年新的奋斗征程!
  13. 永久禁用software reporter 进程,占用高解决方法。【永久禁用software_reporter_tool.exe程序】
  14. 双光子荧光成像_为什么双光子成像如此重要?
  15. [转]WIN7服务一些优化方法
  16. 耳机驱动调试(插拔检测与按键检测)
  17. DMIPS CPU主频
  18. finalize()介绍
  19. error: dst ref refs/heads/master receives from more than one src
  20. Android 性能优化之线程优化

热门文章

  1. 通俗易懂设计模式解析——代理模式
  2. C语言 提取字符串中的所有整数
  3. 浅谈 TypeScript【上】-- Flow 静态类型检查工具
  4. C 语言实例 - 斐波那契数列
  5. 山东大学有人陪!真的吗?_10,000小时! 您真的需要那么多吗?
  6. ubuntu18安装sublime
  7. Mac上command not found: vituralenv
  8. Python预测2020高考分数和录取情况
  9. Vue与服务端数据交互 [ axios ]
  10. 浏览器兼容性问题解决方案之CSS——已在IE、FF、Chrome测试