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.设置服务器响应类型为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中生成验证码,布布扣,bubuko.com

时间: 2024-10-01 21:32:50

servlet中生成验证码的相关文章

JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)

[我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答.可以防止恶意破解密码.刷票.论坛灌水.有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录. 原理 在servlet中随机生成一个指定位置的验证码,一般为四位,然后把该验证码保存到session中.在

Servlet中生成json文件,echarts模板调用

在echarts官网中下载的模板数据都是固定的,而我的项目需要数据是动态改变的,所以我试了很多方法来解决这个问题,其中成功的一种方法是在Servlet中先生成json数据格式,之后再把内容写到一个json文件中,在HTML中在调用这个json文件就可以了. 先生成json数据格式 JSONObject q1 = new JSONObject(); JSONObject q2 = new JSONObject(); JSONObject q3 = new JSONObject(); JSONObj

PHP中生成验证码

//生成图片$im = imagecreatetruecolor(100,30);//生成颜色,当第一次调用生成颜色的方法,是生成背景颜色,默认是黑色//如果想自定义背景颜色,用到imagefill函数$bg = imagecolorallocate($im,200,200,200);imagefill($im,0,0,$bg);//第二次调用这个方法,是可以生成图片上面的文字或其他样式的颜色$te = imagecolorallocate($im,0,0,0); $te2 = imagecol

详细说说如何生成验证码—ASP.NET细枝末节(4)

前言 今天小编详细的说一下,ASP.NET网站开发过程中生成验证码的全部问题. 本文的目标,是让读者了解,生成验证码涉及的全部基础知识问题. 当然这里说的是比较简单的验证码. 真正符合要求的验证码,涉及到计算机图形学的一些问题,这就不是网站开发人员该考虑的了,公司肯定有专人干这个,或者有开发包. 1.为啥要研究这东西? 在正文开始之前,我又几个问题要强调. 1.对于验证码的生成问题,即使完全不了解,也不会影响开发. 我们完全可以到网上C+V一点代码搞定(也就是说,这不是asp.net网站开发的核

node.js生成验证码及图片

示例代码: var svgCaptcha = require('svg-captcha'); var fs = require('fs'); var codeConfig = { size: 5,// 验证码长度 ignoreChars: '0o1i', // 验证码字符中排除 0o1i noise: 2, // 干扰线条的数量 height: 44 } var captcha = svgCaptcha.create(codeConfig); fs.writeFileSync('test.png

javaweb学习总结(九)—— 通过Servlet生成验证码图片

一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl.response.study; 2 import java.awt.Color; 3 import java.awt.Font; 4 import java.awt.Graphics; 5 import java.awt.Graphics2D; 6 import java.awt.image.Buff

SpringMvc项目中使用GoogleKaptcha 生成验证码

SpringMvc项目中使用GoogleKaptcha 生成验证码 前言:google captcha 是google生成验证码的一个工具类,其原理是将随机生成字符串保存到session中,同时以图片的形式返回给页面,之后前台页面提交到后台进行对比. 1.jar包准备 官方提供的pom应该是 <dependency> <groupId>com.google.code.kaptcha</groupId> <artifactId>kaptcha</arti

转: 通过Servlet生成验证码图片

孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(九)—— 通过Servlet生成验证码图片 一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl.response.study; 2 import java.awt.Color; 3 import java.awt.Font; 4 import java.awt.Graphics; 5

servlet生成验证码验证的实现

servlet中的方法实现代码: import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.PrintWriter; import java.util.Random; import javax.servlet.ServletException; imp