验证码的生成【JAVAweb】

原创 2016年08月28日 14:33:00

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");
		}


版权声明:转载请注明出处~

JavaWeb项目生成验证码

  • 2016年09月18日 20:22
  • 29KB
  • 下载

JavaWeb登录页面生成数字或字母图片验证码

1.登陆页jsp:              登陆页面               content="width=device-width,initial-scale=1.0, minimu...

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

一、BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 packa...

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

验证码是现在必不可少的一个小功能,可以放爆破,防垃圾请求,总之还是有一定约束力的SpringMVC实现验证码功能主要是提供一个URL请求,该请求对应的方法可以生成一张验证码图片,然后把该验证码数值存入...

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

一、BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 ...

简单的Javaweb生成验证码实例

通过java图形界面技术,生成随机的验证码图片。 package com.itcast.servlet; import java.awt.Color; import java.awt.Font; ...

javaweb之response随机生成图片验证码加载到web页面中(本实例使用了禁止浏览器缓存头),并且单击使用javascript换图片

package test.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; impor...

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

本文转载,纯属学习笔记,原文地址:http://www.cnblogs.com/xdp-gacl/p/3798190.html 一、BufferedImage类介绍 生成验证码图片主要用到...

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

 一、BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 ...

javaWeb中图片验证码的生成

javaWeb中生成验证码并在jsp上显示,我这里是用的Struts2,所以分为三步,第一,写Action,第二,写Struts.xml,第三,写jsp 第一步,编写Action,这里用到了se...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:验证码的生成【JAVAweb】
举报原因:
原因补充:

(最多只允许输入30个字)