servlet中生成验证码
在servlet中生成验证码
package login;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* 生成验证码servlet
* @author Administrator
*
*/
public class CheckCodeServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("service called");
/**1.设置server响应类型为jpg格式图片 */
response.setContentType("image/jpeg");
/**2.绘图**/
//1.在内存中开辟空间存储图片
BufferedImage image = new BufferedImage(60,25,BufferedImage.TYPE_INT_RGB);
//2.获得画笔
Graphics g = image.getGraphics();
//3.准备随机数对象
Random r = new Random();
//4.设置图片背景色
g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
//5.填充
g.fillRect(0, 0, 60, 25);
//6.设置画笔前景色(设置字体颜色)
g.setColor(new Color(0,0,0));
//7.产生随机数
String number = String.valueOf(r.nextInt(99999)+1000);
/**将验证码存放session中*/
HttpSession session =request.getSession();
session.setAttribute("checkcode", number);
//8.数字画到图片上
g.drawString(number, 15,15);
g.drawLine(r.nextInt(20), r.nextInt(20), r.nextInt(50), r.nextInt(50));
g.drawLine(r.nextInt(20), r.nextInt(20), r.nextInt(50), r.nextInt(50));
g.drawLine(r.nextInt(20), r.nextInt(20), r.nextInt(50), r.nextInt(50));
g.drawLine(r.nextInt(20), r.nextInt(20), r.nextInt(50), r.nextInt(50));
/**3.使用特定格式压缩图片并输出*/
//1.建立文件输出流
OutputStream os =response.getOutputStream();
//2.使用指定格式
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(os);
encoder.encode(image);
}
}
在jsp页面使用java产生的验证码:
<td style="width:80px">
验证码:
</td>
<td valign="middle" >
<input name="validatecode" size="7px"/>
<img src="checkcode" id="img"><!-- 等效于"#" -->
<a href="javascript:;" onclick="document.getElementById('img').
src='checkcode?'+new Date().getTime();"><span style="font-size:12px;">看不清。换一张</span></a>
<br/>
<span style="color:red;">
<%
String check_error=(String)request.getAttribute("check_error");
%>
<%=check_error==null?"":check_error%>
</span>
</td>
在xmd文件中面的配置
<servlet>
<servlet-name>check</servlet-name>
<servlet-class>login.CheckCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>check</servlet-name>
<url-pattern>/checkcode</url-pattern>
</servlet-mapping>
进行验证推断的部分代码:
String validatecode=request.getParameter("validatecode");//验证码
String checkCode=(String)session.getAttribute("checkcode");
在servlet里面进行比較
servlet中生成验证码的更多相关文章
- java中生成验证码,以及验证码的使用
java中生成验证码,以及验证码的使用: 1:验证码生成工具类: import java.awt.Color; import java.awt.Font; import java.awt.Graphi ...
- JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)
[我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计 ...
- 使用Servlet动态生成验证码
最近在重新看了一遍servlert,看到篇优质博客推荐给大家:https://www.cnblogs.com/xdp-gacl/p/3798190.html 顺便把学习过程中的知识记录下来. 今天是如 ...
- 2017.11.29 JSP+Servlet 中功能验证码及验证的实现
源代码如下: validate.jsp <%@ page language="java" import="java.util.*" pageEncodin ...
- PHP中生成验证码
//生成图片$im = imagecreatetruecolor(100,30);//生成颜色,当第一次调用生成颜色的方法,是生成背景颜色,默认是黑色//如果想自定义背景颜色,用到imagefill函 ...
- Servlet生成验证码并进行账号密码和验证码的验证登陆!
前言: 人不是生来就懂事的,在编程的世界也是一样,想想在大一的时候我还是那个连输出Hello World!都不会的小孩子是,现在我已经可以编出属于我自己的小程序了.编程其实并不可怕,可怕的是你不去编. ...
- Java生成验证码原理(jsp)
验证码的作用: 验证码是Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的 ...
- Java生成验证码并进行验证(转)
本文转自http://blog.csdn.net/worm0527/article/details/51030864 一.实现思路 使用BufferedImage用于在内存中存储生成的验证码图片 使用 ...
- 详细说说如何生成验证码—ASP.NET细枝末节(4)
前言 今天小编详细的说一下,ASP.NET网站开发过程中生成验证码的全部问题. 本文的目标,是让读者了解,生成验证码涉及的全部基础知识问题. 当然这里说的是比较简单的验证码. 真正符合要求的验证码,涉 ...
随机推荐
- tomcat 下安装 MantisBT
环境 OS:win8.1 up1 64bit tomcat :9.0.0 64bit php: php-7.1.7-nts-Win32-VC14-x64.zip postgres: postgresq ...
- 02工厂方法模式FactoryMethod
一.什么是工厂方法模式 工厂方法模式同样属于类的创建型模式又被称 为多态工厂模式 .工厂方法模式的意义是定义一个创建 产品对象的工厂接口,将实际创建工作推迟到子类当中. 核心工厂类不再负责产品的创建, ...
- Markdown 代码
我们使用三个反引号来标记代码,语法及效果如下: ```python #!/usr/bin/env python #-*- coding:utf- -*- print("Hello World ...
- HttpSenderUtil向指定 URL 发送POST方法的请求
package com.founder.ec.common.utils; import java.io.BufferedReader; import java.io.IOException; impo ...
- 关于H5页面在iPhoneX适配(转)
1. iPhoneX的介绍 屏幕尺寸 我们熟知的iPhone系列开发尺寸概要如下: △ iPhone各机型的开发尺寸 转化成我们熟知的像素尺寸: △ 每个机型的多维度尺寸 倍图其实就是像素尺寸和开 ...
- Android studio启动后卡在refreshing gradle project
这个问题几乎每个刚使用Android studio的同学都会碰到过,网上有各式各样的方法,有的说使用本地gradle,我试过多次,每次启动Android studio时还是会检查更新,所以根本上解决的 ...
- 使用jenkins pipeline,并发selenium测试 --- 你值得了解
一.契机 相信很多使用selenium进行UI测试,再对接jenkins时,都是简单的在jenkins上将命令输入就完事了. 但是,相信你一定会遇到以下问题: 1.你需要同时跑不同文件或不同类的用例, ...
- H - An Easy Problem?!
来源 poj2826 It's raining outside. Farmer Johnson's bull Ben wants some rain to water his flowers. Ben ...
- zouxy09-图像卷积与滤波的一些知识点
原文地址 图像卷积与滤波的一些知识点 zouxy09@qq.com http://blog.csdn.net/zouxy09 之前在学习CNN的时候,有对卷积进行一些学习和整理,后来就烂尾了,现在稍微 ...
- zabbix监控主机CPU使用率
zaibix默认模板针对CPU只有监控负载(load)没有监控CPU使用率 选择配置-模板-Template OS Windows-监控项 创建监控项 创建监控图形 查看图像结果