1、这里是生成验证码的封装*:可以在需要的时候直接调用工具包,比较方便*
package com.utils;
/**
- 工具类:将生成的验证码封装到工具类
*/
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;
import javax.servlet.http.HttpSession;
public class MyUtils {
/**
* 生成验证码
* @param session
* @return
/
public static BufferedImage createImageCode(HttpSession session) {
//创建图片缓冲对象
BufferedImage bi = new BufferedImage(68, 22,BufferedImage.TYPE_INT_RGB);
//通过图片缓冲对象获取画笔
Graphics g = bi.getGraphics();
//设置画笔颜色(默认是白色)
g.setColor(new Color(200,188,255));
//把颜色填充到画布指定位置和大小
g.fillRect(0,0,68,22);
//创建一个随机对象
Random r = new Random();
//随机产生干扰线,使图象中的认证码不易被其它程序探测到。
g.setColor(Color.BLACK);
for (int i = 0; i < 50; i++) {
int x = r.nextInt(68);
int y = r.nextInt(22);
int xl = r.nextInt(5);
int yl = r.nextInt(5);
g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
//x,y 为起点的坐标,x + xl, y + yl为终点的坐标
g.drawLine(x, y, x + xl, y + yl);
}
//准备一个字符数组(用于随机生成的验证码字符)
char[] c = “QWERTYUIOPASDFGHJKLZXCVBNM1234567890”.toCharArray();
//用于存放生成的验证码字符
StringBuffer s = new StringBuffer();
//随机生成4个字符
for(int i = 0,len = c.length;i < 4;i++) {
//获取随机下标
int index = r.nextInt(len);
//设置画笔颜色
g.setColor(new Color(r.nextInt(80),r.nextInt(150),r.nextInt(200)));
//说把字符画到画布指定的位置
g.drawString(c[index]+"",4+i15,18);
//把生成的字符存到字符串缓冲区备用
s.append(c[index]);
}
session.setAttribute("code",s.toString());
return bi;
}
}
2、在这里举一个例子:一般在登录页面设置验证码
我们写一个登录页面
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
验证码: | 换一张 |
3、生成的验证码以图片的形式传入
<%@page import=“javax.imageio.ImageIO”%>
<%@page import=“com.sun.prism.Image”%>
<%@page import=“com.utils.*”%>
<%@page import=“java.awt.image.BufferedImage”%>
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
4、对登录页面(这里只有验证码)的处理
如果只是验证验证码是否有效,可以转到success.jsp页面,或者error.jsp页面
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%
//设置字符编码
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
//校验验证码
String code1 = request.getParameter(“code”);
String code2 = (String)session.getAttribute(“code”);
if(code1.equals(code2)){
//失败,任务继续,转发到login.jsp页面
response.sendRedirect(“successful.jsp”);
return;
}else{
out.println(“验证码不正确!”);
}
%>