生成最简单的验证码图片的Java代码

后端代码:

package priv.lwx.servlet.sl.web;
/*** description** @author liaowenxiong* @date 2022/3/25 09:56*/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.io.OutputStream;
import java.util.Random;@WebServlet("/PlainCheckCodeServlet")
public class PlainCheckCodeServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("image/png");// 在内存中构造一个图像对象BufferedImage image = new BufferedImage(45, 20, BufferedImage.TYPE_INT_RGB);// 创建随机数对象Random r = new Random();// 获得画笔,并且转换成2D画笔Graphics2D,因为Graphics2D可以去锯齿,Graphics2D是Graphics的子类Graphics2D g = (Graphics2D)image.getGraphics();// 随机设置画笔的颜色// g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));g.setColor(Color.BLUE);// 填充矩形,其实就是填充背景色g.fillRect(0, 0, 60, 20);// 设置画笔的颜色g.setColor(new Color(0, 0, 0));// 设置字体、样式、大小Font font = new Font("宋体", 0, 10);g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 抗锯齿g.setFont(font);// 随机获取0~99998之间的数值String number = String.valueOf(r.nextInt(99999));// 把获取到的数值绘入图片对象中g.drawString(number, 5, 15);// 获得字节输出流,因为要输出的是图像压缩之后的字节数组,所以,不能用 PrintWriter。OutputStream os = response.getOutputStream();// 获取图片压缩编码器// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);// 这是Sun公司私有的API// encoder.encode(image);ImageIO.write(image, "png", os);}
}

前端代码:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head><title>注册</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="css/style.css"/><script>window.onload = function () {var image = document.getElementById("checkCode");var rb = document.getElementById("rb");image.onclick = function () {image.src = "plain_check_code?" + Math.random();};rb.onclick = function () {image.src = "plain_check_code?" + Math.random();}};</script>
</head>
<body>
<div id="wrap"><div id="top_content"><div id="header"><div id="rightheader"><p>2009/11/20<br/></p></div><div id="topheader"><h1 id="title"><a href="#">main</a></h1></div><div id="navigation"></div></div><div id="content"><p id="whereami"></p><h1>注册</h1><form action="register.do" method="post"><table cellpadding="0" cellspacing="0" border="0"class="form_table"><tr><td valign="middle" align="right">用户名:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="accountName"/><%String msg = (String) request.getAttribute("registerErrorMessage");%><span style="color: red;font-style: italic"><%=(msg == null ? "" : msg)%></span></td></tr><tr><td valign="middle" align="right">真实姓名:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="realName"/></td></tr><tr><td valign="middle" align="right">密码:</td><td valign="middle" align="left"><input type="password" class="inputgri" name="password"/></td></tr><tr><td valign="middle" align="right">性别:</td><td valign="middle" align="left"><input type="radio" class="inputgri" name="gender" value="m" checked="checked"/><input type="radio" class="inputgri" name="gender" value="f"/></td></tr><tr><td valign="middle" align="right">验证码:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="checkCode"/><img style="vertical-align: middle;height: 32px" id="checkCode" src="plain_check_code"/><a href="javascript:" id="rb">换一张</a></td></tr></table><p><input type="submit" class="button" value="注册 &raquo;"/></p></form></div></div><div id="footer"><div id="footer_bg">ABC@126.com</div></div>
</div>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cognito_将Amazon Cognito与单页面应用程序(Vue.js)集成

cognito在本文中&#xff0c;我们将研究使用OAuth协议通过Amazon Cognito对单页应用程序&#xff08;使用Vue.js构建&#xff09;进行身份验证。 在上一篇文章中&#xff0c;我们将服务器端应用程序与Amazon Cognito集成在一起。 搭建单页应用程序 我们将使用vue-cli创建一个空…

段描述符表(GDT+LDT)的有感

【0】写在前面 要知道&#xff0c;在汇编中&#xff0c;代码的装入顺序决定了在内存中的地址位置。所有的代码或者数据都在硬盘上&#xff0c;当调试或者启动的时候&#xff0c;加载到内存&#xff1b;当需要对数据进行处理的时候&#xff0c;我们通过将数据从内存载入到regis…

地理信息系统概论_地理信息系统概论黄杏元第3版配套练习题库——才聪学习网...

黄杏元《地理信息系统概论》(第3版)配套题库【考研真题精选&#xff0b;章节题库】一、选择题1完整的GIS主要由四个部分构成&#xff0c;即计算机硬件系统、计算机软件系统、(  )和系统管理操作人员。[杭州师范大学2018年研]A&#xff0e;网络B&#xff0e;用户C&#xff0e;…

PO/BO/VO/DTO/POJO/DAO/DO

文章目录DO&#xff08;Domain Object&#xff09;DO&#xff08;Data Object&#xff09;POVOBODTOPOJODAOJavaBeanEJBEntity应用程序的分层设计MVC业务分层阿里开发手册关于POJO类的命名规范总结参考文章DO&#xff08;Domain Object&#xff09; Domain Object&#xff0c;…

openshift_OpenShift Origin中的Kubernetes Spark运算符(第1部分)

openshift本系列有关Radanalytics.io的Kubernetes Spark运算符 OpenShift起源 。 它是一个开源的运营商来管理 Apache Spark集群和应用程序。 为了在OpenShift Origin上部署操作员&#xff0c;第一次需要为其克隆GitHub存储库&#xff1a; git clone https://github.com/rad…

小程序二级页面tabbar_小程序页面推广踩坑记

前几天&#xff0c;团队里有个小伙伴遇到一个问题&#xff0c;卡壳了大半天。我觉得这个例子值得拿出来分享给大家。希望大家以后遇到类似的问题能顺利绕过这种坑。业务场景很常见&#xff0c;就是为了配合小程序中特定页面的推广&#xff0c;区分推广渠道和人员&#xff0c;逐…

转移指令jmp和跳转指令call

【-1】写在前面 以下内容文字描述来自于 王爽老师的《汇编语言》教材&#xff0c;建议大家都买一本&#xff0c;哈哈。不是我打广告&#xff0c;确实人家写的好&#xff0c;应该支持。我只是附上了自己的图片和理解而已。 【0】先上干货 只修改ip&#xff0c;称为段内转移&a…

jmeter负载测试测试_使用Apache JMeter负载测试Web应用程序

jmeter负载测试测试Apache JMeter是用于模拟Web应用程序上的用户负载以测试性能的出色工具。 您可以通过指定用户数量和请求间隔来轻松地构建测试计划&#xff0c;然后JMeter将为每个用户生成一个线程并访问您的Web应用程序。 在测试结束时&#xff0c;您将获得一份性能摘要报告…

Windows下安装Nutch

Nutch安装 一、需求部份 a) Nutch是Java开发的所以需要下载Java JDK 下载地址http://java.sun.com/javase/downloads/index.jsp b) Nutch的演示搜索页面是Jsp的需要Tomcat做服务器 下载地址&#xff1a;http://jakarta.apache.org/tomcat/ c) Nutch的脚本都是用Linux的Shell写的…

python子进程关闭fd_gpg –passphrase-fd无法使用python 3子进程

以下脚本encrypt_me.py(modified from another post)使用gpg加密自身并以装甲形式打印出密文.但它只适用于python2.7但不适用于python3&#xff1f;你知道它在python3上运行时有什么问题吗&#xff1f;import subprocessimport shleximport osimport sysin_fd, out_fd os.pipe…

程序编码(机器级代码+汇编代码+C代码+反汇编)

【-1】相关声明 本文总结于csapp&#xff1b; 了解详情&#xff0c;或有兴趣&#xff0c;建议看原版书籍&#xff1b;【0】程序编码 GCC调用了一系列程序&#xff0c;将源代码转化成可执行代码的流程如下&#xff1a; &#xff08;1&#xff09;C预处理器扩展源代码&#xf…

angular1.2.27_Angular 8 + Spring Boot 2.2:立即构建一个CRUD应用程序!

angular1.2.27“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 如果您已经成为Java开发人员超过15年&#xff0c;那么您可能还记得何时…

ssm中怎么用location.href跳到controller层_聊聊自动驾驶中的功能开发

在知乎上看过不少大牛写的自动驾驶技术介绍文章&#xff0c;大多谈到的是AI, Deep Learning, Computer Vision等等感知(Perception)层面的。但在各个传感器(雷达、摄像头、激光雷达等)探测到目标信息及周围环境后&#xff0c;车辆该如何做出反应&#xff1f;自动驾驶的大脑该怎…

MyEclipse详细使用教程

第一部分MyEclipse的基本使用 一&#xff0e;提示&#xff1a;MyEclipse的透视图按钮&#xff1a;可以切换不同的透视图&#xff08;位于右上角&#xff09; 1.建立一个工程 ----File—new—project—选项含有Javaproject&#xff0c;webproject等等—输入工程名字如myproject&…

控制语句(if-else+循环+switch)汇编规则

【1】说说条件码 最常用的的条件码有&#xff1a; CF&#xff1a;进位标志 &#xff08;无符号溢出&#xff09;ZF&#xff1a;零标志SF&#xff1a;符号标志&#xff08;结果为负数&#xff09;OF&#xff1a;溢出标志 &#xff08;补码溢出&#xff0c; 有符号溢出&#xf…

zxing qr区域判断_如何在Java中使用Zxing和JFreeSVG创建QR Code SVG?

zxing qr区域判断在本文中&#xff0c;我们将研究如何使用Zxing QR代码生成库和JFreeSVG库在Java中创建QR Code SVG图像。 QR码生成 下面的代码使用Zxing库创建一个表示QR Code的java.awt.image.BufferedImage对象&#xff1a; public static BufferedImage getQRCode(String …

审批流_怎样让审批工作流和应用数据分离?

在企业行政管理中&#xff0c;审批是最常遇到的场景。传统管理中&#xff0c;人们会有纸张审批&#xff0c;而现在市场上已有大量的线上审批软件&#xff0c;他们帮助企业完成审批电子化&#xff0c;审批速度更快&#xff0c;信息也能留档。然而大部分审批软件都不够灵活&#…

java 反射api_反射是最重要的Java API

java 反射api前几天我在想-这是最重要的Java API。 哪种SE和EE API可以使大多数Java生态系统成为可能&#xff0c;而哪些API不能重新创建为第三方库。 正如您可能已经猜到标题一样&#xff0c;我认为它是Reflection API 。 是的&#xff0c;它不可避免地是每个项目的直接或间接…

前端校验表单项内容是否合规的JS脚本代码

用途&#xff1a;校验ip地址的格式 输入&#xff1a;strIP&#xff1a;ip地址 返回&#xff1a;如果通过验证返回true,否则返回false&#xff1b; */ function isIP(strIP) { if (isNull(strIP)) return false; var re/^(\d).(\d).(\d).(\d)$/g //匹配IP地址的正则表达式 if(r…

过程(栈帧结构是干货)

【0】写在前面 过程&#xff08;栈帧结构是干货&#xff09;&#xff1b;本文总结于csapp&#xff0c; 加上自己的理解&#xff1b;【1】栈帧结构 每个函数的每次调用&#xff0c;都有它自己独立的一个栈帧&#xff0c;这个栈帧中维持着所需要的各种信息。 过程调用&#xf…