使用servlet编写一个验证码的例子

使用servlet编写一个验证码的例子
package com.topsuntech.gUnit_cnpo.common.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.*;

/*
* 功能:调用AuthServlet可以生成一个验证码图片,图片的宽度和高度可以自定义
* 调用格式: /servlet/AuthServlet?width=60&height=20
* 或者/servlet/AuthServlet
* 时间:2007-9-4
*
*
*/
public class AuthServlet extends HttpServlet {
private Font mFont=new Font("Times New Roman", Font.PLAIN,18);//设置字体
//static String AuthCode="";

// 处理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的随机数


HttpSession session=request.getSession();//request.getSession(false)当参数为false时,有可能不创建session
//session.setAttribute("getImg",s);
response.setContentType("image/gif");
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
int width=60;
int height=20;
if(request.getParameter("width")!=null && !request.getParameter("width").equals(""))
width = Integer.parseInt(request.getParameter("width"));
if(request.getParameter("height")!=null && !request.getParameter("height").equals(""))
height = Integer.parseInt(request.getParameter("height"));


ServletOutputStream out=response.getOutputStream();
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //设置图片大小的
Graphics gra=image.getGraphics();
Random random=new Random();

gra.setColor(getRandColor(200,250)); //设置背景色
gra.fillRect(0,0,width,height);

gra.setColor(Color.black); //设置字体色
gra.setFont(mFont);


// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
gra.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
gra.drawLine(x,y,x+xl,y+yl);
}

// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
gra.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
gra.drawString(rand,13*i+6,16);
}
//System.out.println("showimage="+sRand);
//session.setAttribute("getImg",sRand);
session.setAttribute("AuthCode",sRand);
//AuthCode = sRand;
//session.putValue("AuthCode",sRand);
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
//out.flush();

}

static Color getRandColor(int fc,int bc){//给定范围获得随机颜色
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}

static public String getAuthCode(HttpSession session){//返回验证
return (String)session.getAttribute("AuthCode");

}
servlet写的一个验证码程序 用servlet生成登陆验证码的图片程序 立即下载

相关推荐

识别产品外观的合格软件_工业视觉工业质检视觉识别机器视觉视觉检测智能制造工业检测缺陷...

随着工业物联网技术的迅猛发展,掀起了以云计算、大数据、以及人工智能 AI 等信息技术正与传统工业深入融合,由此衍生的 “智能制造4.0” 理念,正在为全球工业带来深远变革。中国的制造业巨头也纷纷借此发力,向智能化、数字化制造演进,实施战略转型。如何高效科学的管理和分析制造业务链上的生产价值,推进制造企业生产工艺优化与产品质量提升是每一个制造企业在数字化、智能化转型过程中的必经之路。业务发展带来的挑...

weixin_42502419的博客 751

Servlet写验证码

下面让我们来说一下为什么在项目开发中要用到验证码,以及使用验证码会给我们的项目带来什么好处? 1、如果开发中不使用验证码会给项目带来那些危害: ①、如果对用户不断登录的话,可以破解用户密码 ②、对某个网站创建账户 ③、对某个网站提交垃圾数据 ④、对某个网站刷票等一系列危害 2、在网上的可以看到其实验证码是通过动态获取图片以及图片中的内容不断变化的过程,下面让我们来说一下生成验证码用到了

似水流年 2648

看我如何用kali实时截获隔壁"小姐姐"的上网隐私(结尾有彩蛋)

看我如何用kali实时截获隔壁&amp;amp;amp;quot;小姐姐&amp;amp;amp;quot;的手机图片等信息(结尾有彩蛋哦) 首先圈下重点:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或...

SoulCat 2万+

Servlet实现一个简单的登录【验证码】功能

Servlet实现一个简单的登录【验证码】功能 开发工具 主要用的开发工具为 MyEclipse(2014、2016均可)、Tomcat 6.0以上、浏览器等。 开发环境 开发环境为windows系统,已安装配置Java最新版开发环境。 主要功能与语言 登录验证码。 所采用JSP+Servlet+JavaBean传统方式,仅限于学习使用。 主要代码实现  ...

jcy_15090250860的博客 1325

VSAN数据救援实战:当26个虚拟机突然不可访问时我们做了什么?

本文深度复盘了一次由运维操作失误引发的VMware vSAN存储危机,导致26个虚拟机数据不可访问的实战救援过程。文章详细剖析了vSAN脑裂状态的诊断方法,分享了在官方支持受限时,如何结合社区智慧与自主分析,通过精准的底层命令干预和状态推理,最终成功恢复全部数据的破局思路与操作细节,为vSAN数据救援提供了宝贵经验。

weixin_35749786的博客 237

扩增子分析|基于零模型的群落确定性和随机性构建过程——R实战

周集中教授团队多年在群落确定性和随机性过程深耕,于2017年总结出来下述图表中的计算路径,广受生态领域研究者的推崇。本文基于该计算路径,梳理了整理了邓晔老师组的代码,通过一个实例演示了计算过程和结果。

weixin_46814750的博客 4673

Servlet编写验证码

后台Servlet 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.ImageI

zhoulenihao的专栏 866

科研党必备:用Python+Excel批量下载文献的保姆级教程(附常见错误解决)

本文提供了一套利用Python和Excel实现外文文献批量下载的自动化解决方案。教程详细介绍了如何从数据库导出并清洗DOI信息,编写健壮的Python脚本进行批量下载,并包含错误处理与进阶优化技巧,旨在帮助科研人员将重复性劳动自动化,大幅提升文献收集效率。

weixin_29050513的博客 307

[转载]用servlet写的一个验证码的例子

今天想写一个验证码,想写带边框的。不过上网找到一个更不错的验证码效果为:-------------------------------验证码生成页--------------------------------------------------import java.io.*;import java.net.*;import java.awt.Color;import j

lovejavalovejava的专栏 502

YOLOv11 | 一文带你深入理解ultralytics最新作品yolov11的创新 | 训练、推理、验证、导出 (附网络结构图)

ultralytics发布了最新的作品YOLOv11,这一次YOLOv11的变化相对于ultralytics公司的上一代作品YOLOv8变化还是很大的(YOLOv9、YOLOv10均不是ultralytics公司作品),其中改变的位置涉及到C2f变为C3K2,在SPPF后面加了一层类似于注意力机制的C2PSA,还有一个变化大家从yaml文件是看不出来的就是它的检测头内部替换了两个DWConv,在损失函数方面就没有变化了还是采用的CIoU作为边界框回归损失,下面带大家深入理解一下ultralytics最新作品

Snu77的博客 18万+

基于 Qt C++ 的智能工厂数字孪生系统

你想要实现一个基于 Qt C++ 的智能工厂数字孪生系统,核心是 **Qt 3D** 场景搭建 + **实时数据驱动** 设备模型。下面我将为你提供一个完整的解决方案,包含 **核心思路、实现步骤、完整代码示例** 和 **注意事项**。| **渲染层** | 3D 场景搭建、设备模型加载、实时动画渲染、用户交互。| **业务逻辑层** | 数据处理(滤波、转换)、设备状态管理、动画逻辑控制。| **数据层** | 实时采集设备数据(如传感器、PLC、MES 系统),提供数据接口。

寒寒豆豆软件公司的博客 193

(+验证码)Servlet+JDBC实现登陆功能的小例子

本次案例为Servlet+JDBC实现登陆功能的小例子的进阶版本,关于与数据库交互部分,这里不再赘述 文章目录案例需求:分析步骤结果 案例需求: 访问带有验证码的登录页面login.jsp 用户输入用户名,密码以及验证码。 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误 如果验证码输入有误,跳转登录页面,提示:验证码错误 如果全部输入正确,则跳转到主页success.jsp,显示:用户名,欢迎您 分析 步骤 文件树展示 1.配置文件和jar包在上个案例均有配置过,需要改的有.

学海无涯乐作舟 424

我的AI个人公司成立:基于Skills与Qwen大模型的智能问答平台实战开发+龙虾团队

微学AI推出数字员工矩阵,包含10个核心AI角色(总经理、秘书、工程师等),每个角色具备专属技能模块。系统采用FastAPI+Vue3技术栈,核心功能包括:基于SkillLoader的动态技能管理(支持脚本执行和文档加载)、WebSocket流式输出、多轮对话上下文管理。通过模块化架构实现AI自驱协作,可自主完成从需求分析到开发落地的全流程。项目亮点在于声明式技能配置和实时交互能力,打破传统办公壁垒,提升工作效率。

微学AI的博客 1624

java Web 请求servlet绘制验证码简单例子

java Web 请求servlet绘制验证码简单例子 主要用来了解java代码怎么绘制验证码图片,实际开发中不会这样用 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOE...

这里将承载一段最初的记忆 256

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Servlet的重定向与转发的区别和(附做验证码的例子)

Servlet的重定向与转发的区别(附做验证码的例子) 学习Javaweb,不能不清楚servlet中的重定向和转发的区别,虽然两种方式都可以实现页面跳转,但是混用可能会发生盗链问题。 先来总结,再来详细看看区别在哪: 重定向的特点: 1. 地址栏会发生变化,显示的是转向的其他站点的地址 2. 重定向可以访问其他网站的资源 3. 重定向对浏览器做的是两次请求,并且不能使用request对象来存储和共享数据 4. 重定向是客户端行为 转发的特点: 1. 转发中地址栏路径不会发生变化,不会显示出转向的其他站点的

weixin_48092545的博客 307

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java servlet 制作验证码

登录html ,使用img src 链接到 java的servlet 通过script  改变页面参数,刷新       function change(){   document.getElementById('ww').src='CheakBox?='+new Date().getTime();      }               

Prettily的博客 527

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

验证码

import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random;

hcq__yy的专栏 745

解决ie浏览器回车不刷新验证码问题

1.先导包,然后添加进制浏览器缓存代码 index.jsp <%-- Created by IntelliJ IDEA. User: 49841 Date: 2020/9/4 Time: 10:59 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> &

qq_39773004的博客 339

验证码及文件上传

servlet 验证码及文件上传案例 下面的代码块是生成验证码的工具类 package com.example.homework0525; /** * @author 杨忠荣 * @create 2021-05-25-14:31 */ import javax.imageio.ImageIO; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.awt.

yang_zhong_rong的博客 368

java生成动态验证码_动态生成验证码案例

servlet代码package cn.guizimo.web.servlet;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax...

weixin_39873356的博客 81

验证码案例

验证码案例

m0_53263382的博客 115

java登录的验证码

1、创建一个servlet取名为LoginServlet,将url mappings设置成"/servlet/LogiServlet" 2、在web.xml文件中加入     ImageServlet     com.test.oa.web.login.action.LoginServlet         ImageServlet     /servlet/Logi

wh591344741的专栏 388

验证码 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生成jpeg图像
下一篇: servlet产生数字验证码
lele521
博客等级 码龄20年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值