Servlet实现的图形验证码

Servlet实现的图形验证码

import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;


public class ValidateCode extends HttpServlet {

private Font mFont=new Font("宋体", Font.PLAIN,12);//设置字体
//处理post
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {

doGet(request,response);
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
//取得一个1000-9999的随机数
String s="";

int intCount=0;

intCount=(new Random()).nextInt(9999);//

if(intCount<1000)intCount+=1000;

s=intCount+"";


//保存入session,用于与用户的输入进行比较.
//注意比较完之后清除session.

HttpSession session=request.getSession (true);

session.setAttribute("validateCode",s);

response.setContentType("image/gif");

ServletOutputStream out=response.getOutputStream();

BufferedImage image=new BufferedImage(35,14,BufferedImage.TYPE_INT_RGB);

Graphics gra=image.getGraphics();
//设置背景色
gra.setColor(Color.yellow);

gra.fillRect(1,1,33,12);
//设置字体色
gra.setColor(Color.black);

gra.setFont(mFont);
//输出数字
char c;

for(int i=0;i<4;i++) {

c=s.charAt(i);

gra.drawString(c+"",i*7+4,11); //7为宽度,11为上下高度位置

}

JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();

}
}

  java的图片处理包需要图形环境,而linux上没有启动图形环境,找不到图形环境的server(X11 window server using ':0.0' )所以会报这个错。而通过java -Djava.awt.headless=true 这个参数的指定就可以避免java 2d去找图形环境。

  要么这样试试,应该也可以。在servlet里一开始写一句:

System.setProperty("java.awt.headless","true");

  web服务器的java虚拟机必须加以个参数java.awt.headless=true

  以tomcat为例

  可以在/etc/profile或启动web服务的用户的.bash_profile中的CATALINA_OPTS变量中加入:

CATALINA_OPTS="... -Djava.awt.headless=true"

  其他的也可以看看启动脚本。只要加上这个参数就没问题了。
Java图形验证码开源软件SimpleCaptcha Java中有很多开源xi 阅读详情

相关推荐

从零构建智能ai语音助手:ESP32s3+Python+大语言模型实战指南

本文详细介绍了基于ESP32S3硬件和Python后端的智能语音助手系统开发指南。系统采用ESP32S3采集语音,通过WebSocket实时传输到Python后端处理,利用大语言模型实现自然语言理解和意图识别,再通过TTS合成语音返回。文章从系统架构、工作流程、技术实现(包括OPUS编码、WebSocket通信、ESP32音频处理)等方面进行了详细讲解,并提供了分阶段学习路线和常见问题解决方案。该项目展示了物联网技术与AI技术的融合应用,相比传统语音系统具有更高的灵活性和智能性,为开发者提供了完整的实现方案

Despacito0o的博客 2629

jsp实现图形验证码

调用方法       http://...../getImg">           原理,在servlet中随机生成一个4位数字1000-9999       然后把这数字写入session       输出一个图片,上面写有这四个数字       在服务器端根据用户输入的数字和       session中的值比较。               package   com.schoolwx.u

382

STM32控制舵机SG-5010转动,HAL库

首先设置时钟为72Mhz,预分频系数为72-1,自动重装载计数器的值为5000-1,这样的话就可以得到一个5ms的脉冲宽度,5000的计数值可以让舵机的旋转角度变得更加易控且相对精准,计算旋转角度的时候也可以更加精确。所以我们5ms脉宽,period是5000脉宽-------------角度----------pulse0.5ms-------------0度----------500;1.0ms------------45度---------1000;

qq_73783264的博客 1291

基于Jsp,Servlet的图形验证码

基于Jsp,Servlet的图形验证码 关于图形验证码 其实图形验证码还是和JavaGUI有一定关系的,因为我们知道其实这是一个图片,而图片上的字符又需要存到session中。 代码如下: <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> &lt...

LOL_toulan的博客 411

电力远动入门:手把手解析IEC 60870-5-101规约的帧结构与报文交互(基于DL/T634.5101-2002)

本文深入解析IEC 60870-5-101规约的帧结构与报文交互,适用于电力远动通信系统。通过详细讲解规约的基础架构、控制域位定义及典型报文交互流程,帮助工程师快速掌握101规约的核心技术,提升电力自动化系统的调试与维护能力。

weixin_27076351的博客 244

zabbix6.0.4拓扑图链路显示流量

1. 背景介绍 网络流量监控是网络管理员必备功课,以前研究cacti的weathermap插件,网络流量大小和拥塞情况一清二楚,随着cacti的没落,weathermap插件也不能再继续使用,此时就需要学习了解新的替代方案。 经过研究和实际测试,发现zabbix的拓扑图有这个功能。 以下验证了zabbix的拓扑图显示线路流量的功能。 2. Zabbix 6显示拓扑图流量过程 选择监测-拓扑图 点进Local ne...

u013930899的博客 8478

linux sun/awt/X11GraphicsEnvironment 找不到错误

转载自:linux sun/awt/X11GraphicsEnvironment_落叶翩翩的优快云博客-优快云博客_sun.awt.x11graphicsenvironment 在Linux下,我们在用Java的图片包来处理图片时,经常遇到java.lang.NoClassDefFoundError:sun.awt.X11GraphicsEnvironment 这种异常,这时因为java虚拟机在处理图片时需要本地的x-server的支持,解决方法有两种: 1Java1.4版本以上 启动...

且听风吟的专栏 1084

8卡H20运行DeepSeek-V3-0324性能和推理实测

最近在一台 8卡H20 机器上,先后部署了 DeepSeek-R1-AWQ (671B)和最新的 DeepSeek-V3-0324 (685B) ,测试了下性能和数学问题跑分。服务器由火山引擎提供。

weixin_53138109的博客 3362

sun.awt.X11GraphicsEncvironment解决方案

最近java web项目中涉及文件下载功能,发现使用weblogic部署到Linux服务器后,excel文件无法下载,提示错误为java.lang.NoClassDefFoundError:Could not initialize class sun.awt.X11GraphicsEncvironment ; weblogic设置的方法为,在setDomainEnv.sh中添加启动参数"-Djava.awt.headless=true",例: JAVA_OPTIONS="${JAVA_OPTIONS} -D

hhhhhhhr的博客 823

State of GPT (ChatGPT 原理及现状介绍)

要用 RLHF 的一个简单的原因就是 RLHF 模型效果更好,下面的图来源于 InstructGPT 论文,PPO (RLHF 算法) 后的模型生成的答案更被人类喜欢。karpathy 认为 RLHF 有用的原因是判别比生成更容易,让标注员去写一些 SFT 的 QA 数据对是比较难的,如果有一个 SFT 模型生成一些数据让标注员判断哪个更好就简单很多。,GPT4 最强,前三个都是 RLHF 模型,其他模型都是 SFT 模型。伯克利做的模型评测榜单。

kebijuelun的博客 3577

PyCharm配置WSL开发环境保姆级教程:从安装Conda到项目依赖一键搞定

本文提供PyCharm配置WSL开发环境的完整教程,涵盖从安装Conda到项目依赖管理的全流程。详细介绍了WSL2环境准备、Conda环境配置、PyCharm远程解释器设置等关键步骤,并包含实用技巧和常见问题解决方案,帮助开发者高效搭建Python开发环境。

weixin_42620202的博客 307

Servlet实现图形验证码

Java Servlet 实现的彩色图形验证码,项目源码分析 + 配置。

自由先锋 2321

ESP32-C3入门教程 蓝牙篇①——基于Blufi 的 WiFi 智能配网

文章目录一、前言二、WiFi配网方式三、快速运行四、运行效果五、ESP32-C3程序流程5.1 主程序5.2 回调函数5.3 SmartConfig线程5.4 流程图六、关键函数6.1 设置SmartConfig的协议类型6.2 启动SmartConfig6.3 停止SmartConfig七、其他八、参考 一、前言 本文基于VS Code IDE进行编程、编译、下载、运行等操作 基础知识点请查阅:ESP32-C3入门教程 基础篇①——基于VS Code构建Hello World 二、WiFi配网方式 W

7764

使用Servlet实现图形验证码登录页面

1.介绍 首先需要写一个生成图形验证码的Servlet: 我这里的Servlet为:createImageServlet 然后我们使用登录页面来验证是否能获取图形验证码。 登录后通过Servlet判断用户名密码是否为张三和123(这里简单操作就不连接数据库了) 登录页面:login.jsp 这个页面就是一个表单 判断用户名的Servlet:logCheckServlet 如果用户名密码正确则请求...

ly's Blog 2481

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java servlet实现图形验证码

验证码是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。java 网页开发中经常会在登陆页面添加一张验证码图片,使得每次登陆都要输入验证码。

yifan065的专栏 525

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java web开发:servlet中图形验证码功能的实现

一 验证码的由来 在web项目开发中,为了防止部分人使用自动工具(如:自动注册机)等进行批量的数据处理,在不同的功能节点部分,添加了验证码进行验证,达到对自动软件的屏蔽效果 最经典的应用如:网站注册图形验证码;接下来,通过java技术,结合servlet实现一个网站注册需要的图形验证码程序,提供大家参考。 二 实现注册页面图形验证码效果 1. 创建web项目:jav

自由先锋 2627

Servlet编程实现实现图形验证码

//----------------------------------servlet文件---------------------------- package com.msit.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.Bu

风~忆 469

Servlet-登录时的图形验证码

概述 为了防止黑客或者软件的恶意输入登录,在登录时,我们必须添加类似于随机数或验证码之类的安全措施。 1. 图形验证码(方法一) 在使用servlet创建图形验证码时,必须提前创建lib资源目录,并且导入相关的Validate的jar包,添加到资源目录下。 代码如下: @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

weixin_42297061的博客 221

Servlet之图形验证码工具类封装

图形验证码工具类封装Java图像验证码的相关实现类Image抽象类与图像坐标系BufferedImage类ColorModel组件Raster组件BufferedImage类的基本操作Graphics抽象类Java图像验证码工具类验证码工具类&Servlet配置使用定义Servlet类测试     通常,在网站开发时,在登录、注册以及一些敏感操作的时候,为了防止服务器被暴力请求,或爬虫爬取,可以使用验证码进行过滤,减轻服务器的压力。   &

席木木的博客 1023

java servlet验证码_Servlet 实现验证码

分析生成图片实现类① 定义BufferedImage 对象② 获得 Graphics 对象③ 通过 Random 产生随机验证码信息④ 使用 Graphics 绘制图片⑤ 记录验证码信息到 session 中⑥ 使用 ImageIO 输出图片代码实现1、新建 web 项目 CheckCode,在 WebContent 下新建 index.jspindex.jsppageEncoding="UTF-...

weixin_29123181的博客 357

基于jsp+servlet+js的图形验证码

jsp的图形验证码 servlet的生成图形验证码 package user; import java.awt.Color; 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; im

qq_42998270的博客 208

基于Servlet的验证码技术

基于Servlet的验证码技术 原理:验证码Servlet产生随机字符,保存到Session中,以后从Session中获取这个随机字符和用户输入进行比对。 第一步:产生随机验证码工具Servlet(要求能够看懂核心代码): @WebServlet(urlPatterns = "/verifyCodeController") public class VerifyCodeController ex...

哈 769

Servler 生成随机验证码

import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletConfig; import javax.servl.

tonysong111073的专栏 223

图形验证码(Hutool-captcha)

介绍 验证码功能位于cn.hutool.captcha包中,核心接口为ICaptcha,此接口定义了以下方法: createCode创建验证码,实现类需同时生成随机验证码字符串和验证码图片 getCode获取验证码的文字内容 verify验证验证码是否正确,建议忽略大小写 write将验证码写出到目标流中 其中write方法只有一个OutputStream,ICaptcha实现类...

qq_38795959的博客 2万+

验证码(servlet)

package com.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http....

qq_35367566的博客 205

验证码 ajax java_Java、Servlet、JSP和Ajax实现验证码

环境:windows7,MyEclipse 9首先是写生成验证图片的类:1 packagecn.com.leamon.util;23 importjava.awt.Color;4 importjava.awt.Font;5 importjava.awt.Graphics2D;6 importjava.awt.image.BufferedImage;7 importjava.io.IOExcepti...

weixin_33195162的博客 161
上一篇: servlet产生数字验证码
下一篇: JAVA如何调用WINDOWS命令行
lele521
博客等级 码龄20年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值