java servlet生成验证码

Java Web基础入门第十六讲 Servlet开发——通过Servlet生成验证码图片 BufferedImage类介绍生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个ResponseDemo4 Servlet,用来生成验证码图片。public class ResponseDemo4 extends HttpServlet { public static final int WIDTH = 120; // 生成的图片的宽度 public s 阅读详情

在servlet中生成网页中的验证码:

package com.ctcsys.util;
    import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.awt.image.*;
import java.awt.*;
import javax.imageio.*;

public class CodeMakerServlet extends HttpServlet
{
      //验证码字体
    
private Font[] codeFont =
    
{
        
new Font("Algerian", Font.BOLD,25), 
  
new Font("Vivaldi", Font.BOLD, 25),
        
new Font("Broadway", Font.BOLD,25),
  
new Font("Forte", Font.BOLD, 25)
    }
;
        //验证码数字颜色
    
private Color[] color =
    
{
       Color.BLACK, Color.RED, Color.DARK_GRAY, Color.BLUE
    }
;

    String codeNumbers 
= "";

    
int width = 90, height = 25;

    
// 处理 HTTP get 请求
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                      
throws ServletException, IOException
    
{
        
// 清空缓冲区
        response.reset();

        
// 注意这里的MIME类型
        response.setContentType("image/png");

        
// 设置页面不缓存
        response.setHeader("Pragma", "No-cache");
        response.setHeader(
"Cache-Control", "no-cache");
        response.setDateHeader(
"Expires", 0);

        
// 创建一个 110X40 的图像,验证码显示的图片大小
        BufferedImage image = new BufferedImage(width, height,
                                                BufferedImage.TYPE_INT_RGB);

        
// 得到图形环境对象 g
        Graphics g = image.getGraphics();

        
// 填充背景
        g.setColor(new Color(64,219,255));
        g.fillRect(
0, 0, width, height);

        
for (int i = 0; i < 4; i++)
        
{
            drawCode(g, i);
        }


        drawNoise(g, 
17);

        
// 绘制边框
        g.setColor(Color.gray);
        g.drawRect(
0, 0, width - 1, height - 1);

        
// 将验证码内容保存进session中,用于验证用户输入是否正确时使用
        HttpSession session = request.getSession(true);
        session.removeAttribute(
"codeNumbers");
        session.setAttribute(
"codeNumbers", codeNumbers);
        
  
// 重设字符串
        codeNumbers = "";

        
// 利用ImageIO类的write方法对图像进行编码
        ServletOutputStream sos = response.getOutputStream();
        ImageIO.write(image, 
"PNG", sos);
        sos.close();
    }


    
// 绘制验证码
    public void drawCode(Graphics graphics, int i)
    
{
        
int number = (int)(Math.random() * 10);
        graphics.setFont(codeFont[i]);
        graphics.setColor(color[i]);
        graphics.drawString(
"" + number, 10 + i * 17,22);

        codeNumbers 
+= number;
    }


    
// 绘制干扰线
    public void drawNoise(Graphics graphics, int lineNumber)
    
{
        graphics.setColor(
new Color(9,143,134));
        
for (int i = 0; i < lineNumber; i++)
        
{
            
int pointX1 = 1 + (int)(Math.random() * width);
            
int pointY1 = 1 + (int)(Math.random() * height);
            
int pointX2 = 1 + (int)(Math.random() * width);
            
int pointY2 = 1 + (int)(Math.random() * height);
            graphics.drawLine(pointX1, pointY1, pointX2, pointY2);
        }

    }

    
// 处理 HTTP post 请求, 和doGet一样
    public void doPost(HttpServletRequest request, HttpServletResponse response)
        
throws ServletException, IOException
    
{
        doGet(request, response);
    }

}
 

在要显示验证码位置的页面代码中加入<img id="code" src="/ctcmcdisplay/codeMaker" title="点击刷新验证码"
       style="cursor : pointer;"  align="absmiddle" onclick="return refreshcode()"/>即可,刷新验证码的javascript脚本如下:

<script type="text/javascript">
function refreshcode(){
 document.getElementById("code").src="/ctcmcdisplay/codeMaker?update="+Math.random();
 return false;
}
</script>

红色部分是存放servlet的功能名称,蓝色部分就是在web.xml中配置的servlet映射,web.xml中的配置代码段:

<!-- 生成验证码的servlet -->
 <servlet>
  <servlet-name>CodeMakerServlet</servlet-name>
  <servlet-class>com.ctcsys.util.CodeMakerServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>CodeMakerServlet</servlet-name>
  <url-pattern>/codeMaker</url-pattern>
 </servlet-mapping>

这样在页面中就可以随机出现验证码了,点击验证码图片的时候也可以刷新验证码。

使用Servlet和Java实现随机图片验证码生成 验证码是一种防止自动化的脚本攻击,保证网络服务安全的机制。它的核心作用在于区分用户是计算机还是人类,从而避免恶意程序如自动注册、自动发帖等行为。Servlet技术是一种用于扩展服务器端功能的Java类,它能够处理客户端的请求并产生响应。Servlet运行在服务器端,可以在不同的服务器上运行,如Apache Tomcat、Jetty等。它的主要作用是提供动态内容生成的能力,常用于Web应用中处理HTTP请求。 阅读详情

相关推荐

servlet实现验证码

servlet实现验证码

头歌-信息安全技术-Java生成验证码

第1关:使用Servlet生成验证码

不服输的小乌龟 4754

java 实现验证码(servlet+jsp)

java 实现验证码(servlet+jsp),详情请看:

头歌实验Java生成验证码

本关任务:使用servlet生成验证码。相关知识验证码在我们登陆、注册网站,火车票买票的时候经常会见到的,为什么要有验证码呢?可能很多人都会有这个疑问。但是作为开发者,可能我们更多的就会关注怎么生成验证码了好了,该你啦,使用本关所学内容,完成登录的校验,具体要求如下: 首先实现验证码校验的功能,当验证码填写错误的时候,给前端返回数据“验证码错误”;当用户名为admin,密码为admin123时可以登录成功,返回“登录成功”,其他情况返回“登录失败”;前端页面已经编写完成,你需要编写的是后端代码。

H-rosy的博客 6395

java servlet实现验证码

java servlet实现验证码

Servlet生成图片验证码

通过Servlet生成图片验证码,提供给jsp页面展示,并验证。

Servlet方式实现验证码--Javaweb

动手实践:Servlet方式实验验证码 首先,我们先用常量字符串来作为验证码来测试程序,其次将常量字符串变为变量来实现一个动态验证码的生成。 1.常量字符串来作为验证码 这是一个生成常量字符串验证码的Servlet package random.code; import sun.net.www.content.text.Generic; <%-- Created by IntelliJ IDEA. User: 86130 Date: 2022/4/24 Time: 17.

孙宇航的博客 5484

libfranka---joint_impendence_control例程分析

joint_impedance_control.cpp例程分析 部分内容来自链接,我个人以初学者的角度对代码进行了更加细致的解释。 核心部分: // Set and initialize trajectory parameters. const double radius = 0.05; const double vel_max = 0.25; const double acceleration_time = 2.0; const double run_time = 20.0; d

weixin_41567783的博客 1121

Java中简单的验证码校验

1、这里我们使用注解的方式配置CaptchaServlet,也可以在web.xml中配置。二、定义一个Servlet类处理客户端/前端的请求。一、首先定义一个验证码工具类。

2301_80712749的博客 686

基于java的汉服商城管理系统设计与实现的详细项目实例

本文介绍了一个基于Java的汉服商城管理系统设计与实现项目。该项目采用三层架构设计,包含用户模块、商品管理、订单处理、支付结算等核心功能,支持多角色权限控制和响应式前端界面。 系统创新点包括: 专业化的汉服商品管理,支持多规格属性组合 高并发订单处理机制,确保库存实时同步 个性化智能推荐算法提升用户体验 细粒度权限控制保障系统安全 项目采用SpringBoot+MyBatis技术栈,前端使用React框架实现跨设备兼容。数据库设计包含用户表、商品表、订单表等10个核心表,通过事务管理确保数据一致性。 系统解

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 804

CS224W图神经网络实战:如何用Motifs和Graphlets分析社交网络结构?

本文基于斯坦福CS224W课程,深入探讨了如何利用网络模体(Motifs)和图元(Graphlets)分析社交网络的微观结构。通过实战代码演示,文章介绍了如何识别具有统计显著性的关键连接模式,计算节点的图元度向量以刻画局部拓扑特征,并将这些结构洞见应用于社区发现、影响力分析及图神经网络的节点特征工程,从而提升模型在虚假账号检测等任务中的性能。

2w3e4r5t6y的博客 911

Servlet简单验证码生成

本质:一张图片 目的:防止恶意表单注册 Servlet后台: import javax.imageio.ImageIO; import javax.servlet.Servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet

行行失故路 810

李大勇matlab密码,基于MatlabSimulink的太阳能热水系统仿真研究 沈超.doc

基于MatlabSimulink的太阳能热水系统仿真研究 沈超中国工程热物理学会 工程热力学与能源利用 编号:141090基于Matlab/Simulink的太阳能热水系统仿真研究沈 超1 1 余 鹏1 李洪欣1 魏新利2郑州大学土木工程学院,郑州 450001郑州大学化工与能源学院,郑州 45...

weixin_42298437的博客 1340

Java、Servlet生成验证码由浅到深

这些天 在写一个小项目准备找实习 但是却在生成验证码这块卡住了 在网上看了许多的博客 基本都是清一色的一大串代码然后加几行注释 看得有些云里雾里不知从何下手 然后就写了这篇博客 边写边学习,在自己会的同时也希望带动更多的需要者更容易的入手 这也算是贯彻落实了我国的方针政策——“先懂带动后懂” 以下就是博客的正文 零、实现验证码的主要思想 1. 将可以当验证码的字符存到一个字...

筱白痴的博客 433

基于非接触式微波雷达设计的跌倒检测预警系统【短信报警】

本项目选择基于非接触式微波雷达的跌倒检测预警装置作为技术核心,采用云帆瑞达的R60AFD1跌倒检测模组。这一模组能够根据人体的运动变化,如速度、距离和姿态等特征,判断是否发生跌倒,并可以持续监控老年人是否处于危险状态。此外,本项目还结合4G通信技术,通过Air724UG模块实现短信报警功能,一旦检测到跌倒事故,系统将自动通过4G网络向紧急联系人发送短信报警,及时通知亲属或医护人员进行救援。

1753

混响效果的编程实现:Schroeder混响模型与Moorer型混响

Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。Schroeder混响模型是由Manfred R. Schroeder在1962年提出的,它基于一系列串联的反射器(Allpass Comb Filters)和并联的反射器(Feedback Comb Filters)构成。通过调整各个反射器和全通滤波器的参数,可以实现不同的混响效果。

2301_79326857的博客 1082

java web 生成验证码_Javaweb开发中通过Servlet生成验证码图片

一、BufferedImage类介绍生成验证码图片主要用到了一个BufferedImage类,如下:创建一个DrawImage Servlet,用来生成验证码图片package gacl.response.study;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphic...

weixin_26899879的博客 468

图解B+树的插入过程

B+ 树在现代数据库中很常见,如果我们了解它,在工作中可能对性能优化会有更好的帮助! 最近我一直在思考 B+ 树的高度是由什么决定的。知道我了解了 B+ 树的插入过程,才有一种恍然大悟的感觉! 网上的一些资料杂乱无章,不同的数据库可能还有对 B+ 树有不同的实现。但是万变不离其宗,B+ 树的定义,大致如下所示: 总结一下,B+ 树有下面 5 个重要的特点。 B+ 树包含 2 种类型的结点: 内部结点(也称索引结点)和叶子结点。 根结点本身即可以是内部结点,也可以是叶子结点。 根结点的关键字个数最

愿君出走半生,归来时仍是少年 2134

Java Web通过Servlet生成随机验证码图片

验证码图片在网站的注册、登录中非常常见,下面将主要使用BufferedImage内存图像、Graphics画笔、ImageIO输出图像三个工具类实现生成随机的验证码图片。关于三个工具的功能等详细信息,请自行查找JDK。 package cn.hestyle.web.servlet; import java.awt.Color; import java.awt.Graphics; import j...

hestyle的博客 749

Lumerical 教程,包含作者个人理解及相关设计案例 (目前共计184篇,持续更新中)

4138。

u011699626的博客 1617

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

使用Java通过Servlet生成图片验证码

使用Java通过Servlet生成图片验证码需要一个字典,里边包含需要验证的信息,像这样一唱一和 一呼百应 一干二净 一举两得 一落千丈 一模一样 一暴十寒 一日千里 一五一十 一心一意 两面三刀 三长两短 三番五次 三三两两 三头六臂 三心二意 三言两语 四分五裂 四面八方 四通八达 四平八稳 五光十色Java类,验证码地址指向这个Servletpackage com.braycep.sessi...

Braycep的博客 364

IMSL CNL 7.0.0 (x86-64)Crack

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

Java的servlet生成动态验证码

代码:/** * @class 验证码 */ import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import java

xiaotaode2012的专栏 626

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

基于java-servlet实现验证码的动态生成

在当今的一个互联网时代,大多的网站为了保护服务器的安全性,都会在用户登录的界面添加验证码的校验,本文将基于初学者的角度,探索如何使用Java Servlet是去实现验证码的动态生成。

A_saying的博客 334

java web servlet接收图片,JavaWeb-servlet生成验证码图片

前几天写了简易购物车系统,想着加一个验证码功能,于是上网搜索了相关资料,今天把这个功能实现了基本思路:生成一个图片,并且设置宽高,颜色,边框等然后根据浏览器传来的标志生成对应的验证码图片(默认为数字加字母的验证码)以图片的格式响应给浏览器,显示出验证码图片具体实现://图片的宽度public static final int WIDTH = 120;//图片的高度public static f...

weixin_36180515的博客 232

Java在Servlet中使用画笔对象动态生成验证码

Java生成动态验证码 效果图: 代码描述: package cn.itcast.web.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.ImageIO; import ja

weixin_44949150的博客 296

基于java-servlet实现验证码动态生成

大多的网站为了保护服务器的安全性,都会在用户登录的界面添加验证码,本文将基于初学者的角度,探索如何使用Java Servlet是去实现验证码的动态生成。

Orion_Betelgeuse的博客 324
下一篇: 利用jxl操作excel文件
superjava_2006
博客等级 码龄20年 39粉丝 11原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值