关闭

验证码的生成【JAVAweb】

304人阅读 评论(0) 收藏 举报
分类:

1,在一个servlet中生成一个验证码

package hpu.edu.servlet;

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

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class PicCode extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		BufferedImage bi = new BufferedImage(60, 30, BufferedImage.TYPE_3BYTE_BGR);//拿到一个画板,长为80,宽为50,颜色显示类型为TYPE_3BYTE_BGR
		Graphics g = bi.getGraphics();//在画板上画一张纸
		
		Color color = new Color(224,205,19);//调色 采用RGB的调色方式,R显示红色,。。。取值范围为0~255
		//通过三原色的不同取值可以调出不同颜色, 另外Math.random()
		g.setColor(color);
		g.fillRect(0, 0,80, 30);//颜色填充
		char[] c = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();//设置验证码字符的取值
		Random random = new Random();//随机数字产生器
		StringBuffer sb = new StringBuffer(4);//可以理解为用于存放四个char字符的盒子
		for(int i=0;i<4; i++){
			char index = c[(int)(0+Math.random()*c.length)];//从串中随机取出一个字符
			Font font = new Font("幼圆",Font.BOLD, 25);//设置字符的字体
			Color clo = new Color(random.nextInt(255));
			g.setFont(font);
			g.setColor(clo);
			g.drawString(index+"", i*15, 22);//把字符画到纸上 后边两个参数为偏移量 可调
			//g.setColor(new Color(random.nextInt(150),random.nextInt(220), random.nextInt(180)));//设置字体颜色
			sb.append(index);//把随机生成的一个字符放到盒子里
			
		}//随机产生四个字符画到画板上 并设置相关属性
		
		for(int i=0;i<8;i++){
			g.drawLine(random.nextInt(80), random.nextInt(30), random.nextInt(80), random.nextInt(30));//画干扰线,两点确定一条直线
		}
		request.getSession().setAttribute("piccode", sb.toString());//把四个字符放到session里
		ImageIO.write(bi,"JPG", response.getOutputStream());//输出图片类型为JPG
	}
	
}
2,页面显示 

<pre name="code" class="html"><input type="text" name="checkcode">
<img alt="验证码" src="servlet/PicCode"><a href="">看不清</a>



3,判断正误

//检查验证码
		String checkcode =  request.getParameter("checkcode");
		String piccode= (String) request.getSession().getAttribute("piccode");
		
		if(!checkcode.equalsIgnoreCase(piccode)){
			response.sendRedirect("error.jsp");
		}


0
0
查看评论

JavaWeb项目中生成验证码

在项目中使用servlet随机生成验证码 在jsp页面中验证码图片加入img标签,src为生成验证码的servlet的url; <img id="codeImg" src="/AuthCode/code" onclick="refreshCod...
  • u013360850
  • u013360850
  • 2016-09-18 20:14
  • 2081

java web项目生成验证码的解决方案

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本人声明。否则将追究法律责任。 作者:永恒の_☆ 地址:http://blog.csdn.net/chenghui0317/article/details/12526439 一、前言    在表单页面...
  • ch656409110
  • ch656409110
  • 2013-10-09 22:29
  • 11743

JavaWEB小知识学习--验证码生成

验证码是现在必不可少的一个小功能,可以放爆破,防垃圾请求,总之还是有一定约束力的SpringMVC实现验证码功能主要是提供一个URL请求,该请求对应的方法可以生成一张验证码图片,然后把该验证码数值存入session中,再把图片显示到界面,这样来实现验证码的验证.1.生成验证码生成验证码主要使用awt...
  • u012706811
  • u012706811
  • 2016-07-14 20:10
  • 8470

java web 项目登陆的验证码生成以及更改

web项目的登陆页面,经常会遇到输入验证码的情况
  • fxhbeyond
  • fxhbeyond
  • 2015-02-06 14:33
  • 670

java web中验证码的实现

我们知道在我们注册用户的时候一般都有一段模糊的验证码让我们输入,其实我们自己也可以实现这个验证码 ,验证码的好处是为了防止某些自动提交软件的而已行为  。 下面就利用Servlet +JSP+JavaBran实现一个验证码机制。 BufferedImage  可以操作缓冲区的...
  • yue7603835
  • yue7603835
  • 2012-05-05 14:37
  • 8414

JavaWeb生成图片验证码

在上网注册账号的时候一般都会有图片验证码的验证,防止恶意注册,最让人讨厌的莫过于12306的找你妹。。但是这也不失为一种好的办法,今天就用Javaweb的方式来生成一个图片验证码。大概流程图如下所示:  在myEclipse上新建一个web工程,创建一个Servlet类在doGet方法...
  • chenfengdejuanlian
  • chenfengdejuanlian
  • 2015-10-30 11:07
  • 1320

JavaWeb 实现验证码验证登录

JavaWeb 实现验证码验证登录 1、实现验证码图片生成 VerifyCodeUtils
  • tianluye
  • tianluye
  • 2015-12-30 11:08
  • 784

javaweb实现验证码功能

在javaweb的用户注册与登陆功能时,有时为了防止漏洞或者大量注册,可以使用验证码功能,下面是验证码的一个简单实现验证码类public class ValiImg extends HttpServlet { public void doGet(HttpServletRequest reque...
  • whuhan2013
  • whuhan2013
  • 2016-03-16 16:19
  • 2302

javaweb登录验证码的实现

使用: Controller:生成验证码 @RequestMapping("/user/check.jpg") public void createCode(HttpServletRequest request, HttpServletResponse response) ...
  • imhxl
  • imhxl
  • 2016-10-10 10:41
  • 10138

java自动生成验证码插件-kaptcha

kaptcha一个很好用的验证码插件,java版的,很不错的一个插件,只用简单的在web.xml中设置几个属性,一个很漂亮的验证码就出来了。其他的参数都可以自己设置,最牛的就是提供了接口,可以自己定义哦。 html页面代码 form action="sub...
  • superdog007
  • superdog007
  • 2014-07-16 15:55
  • 7657
    个人资料
    • 访问:143117次
    • 积分:4767
    • 等级:
    • 排名:第7189名
    • 原创:346篇
    • 转载:1篇
    • 译文:0篇
    • 评论:37条
    最新评论