java web随机验证码生成,含改变颜色,字体,干扰线【完整过程附代码】 您所在的位置:网站首页 生成6位验证码怎么弄的 java web随机验证码生成,含改变颜色,字体,干扰线【完整过程附代码】

java web随机验证码生成,含改变颜色,字体,干扰线【完整过程附代码】

2024-07-14 16:09| 来源: 网络整理| 查看: 265

目标:要实现一个登陆界面,且含有验证码输入,输入验证码后可检验输入的正确性

目录 jsp页面验证码生成跳转检验xml文件配置结果展示:

jsp页面

登陆页面的前端login.jsp文件内容:

登陆页面 function reloadCode(){ var time=new Date().getTime(); //由于传过去的时间不一样,所以不是同一个请求 同一个请求时不能实现更新 document.getElementById("imageCode").src="/servlet/CodeServlet?d="+time; } 登陆界面 账号: 密码: 验证码: 验证码生成

jsp页面对调用该CodeServlet.java的内容: 生成包含四个由数字:含大小写字母、随机字体和颜色、干扰线组成的一个验证码 各个板块在程序的注释中都有说明

package servlet; import java.awt.*; //Graphics Color Font import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; import java.util.*; 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 javax.servlet.http.HttpSession; public class CodeServlet extends HttpServlet { private static final long serialVersionUID = 1L; private String[] fontNames = {"Georgia", "Verdana", "Arial", "Tahoma", "Time News Roman", "Courier New", "Arial Black", "Quantzite"}; //内存中创建图像 设置图像个宽高 private int width = 60,height=20; public CodeServlet() { super(); // TODO Auto-generated constructor stub } public String get_rand_digit_str() { //取随机产生了的验证码(4位数字或字符) Random rnd = new Random(); String str = ""; int x = rnd.nextInt(2); if(x == 1) //大写字母 str += (char) (65+rnd.nextInt(26)); //随机字符 else if(x == 2) { //小写字母 str += (char) (97+rnd.nextInt(26)); } else //数字 str+=String.valueOf(rnd.nextInt(9)); //随机一位数字 return str; } //获取 一种 随机颜色 public Color rand_color() { Random random = new Random(); int r = random.nextInt(256); int g = random.nextInt(256); int b = random.nextInt(256); return new Color(r, g, b); } //获取 一种 字体 public Font rand_font() { Random rnd = new Random(); int fontindex = rnd.nextInt(fontNames.length-1); //随机索引 String str = fontNames[fontindex]; //获得该字体 int fontSize = (int) Math.round(Math.random() * 4 + 16); return new Font(str, Font.PLAIN, fontSize); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setHeader("Cache-Control", "no-cache"); BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //获取画笔 Graphics g = image.getGraphics(); //设定背景色 g.setColor(new Color(200,200,200)); g.fillRect(0, 0, width, height); //设置背景板大小 并涂上颜色 Random rnd = new Random(); //画干扰线 g.setColor(new Color(255,225,255)); //随机产生100个干扰线(点) ,使图像中验证码不易被其他程序探测到 for(int i =0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有