JSP实例-彩色验证码

image.java用于产生彩色验证码,其代码如下:

package test;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;

public class Image {
	//验证码图片中可以出现的字符集
	private char mapTable[]={
			'a','b','c','d','e','f','g','h','i','j','k',
			'l','m','n','o','p','q','r','s','t','u','v',
			'w','x','y','z','0','1','2','3','4','5','6',
			'7','8','9'};
	//生成彩色的验证码图片。width表示图片宽度;height表示图片高度。
	public String getCertPic(int width, int height, OutputStream os)
	{
		if(width<=0) width=60;
		if(height<=0) height=20;
		BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
		//获取图形上下文
		Graphics g=image.getGraphics();
		//设置背景
		g.setColor(new Color(0XDCDCDC));
		g.fillRect(0,0,width,height);
		//画边框
		g.setColor(Color.black);
		g.drawRect(0,0,width-1,height-1);
		//随机产生认证码
		String strEnsure="";
		//产生4位认证码
		for(int i=0;i<4;i++)
		{
			strEnsure+=mapTable[(int)(mapTable.length*Math.random())];
		}
		//将认证码显示到图像中
		g.setColor(Color.black);
		g.setFont(new Font("Atlantic Inine",Font.PLAIN,18));
		String str=strEnsure.substring(0,1);
		g.drawString(str,8,17);
		str=strEnsure.substring(1,2);
		g.drawString(str,20,15);
		str=strEnsure.substring(2,3);
		g.drawString(str, 35, 18);
		str=strEnsure.substring(3,4);
		g.drawString(str,45,15);
		//随机产生10个干扰点
		Random rand=new Random();
		for(int i=0;i<10;i++)
		{
			int x=rand.nextInt(width);
			int y=rand.nextInt(height);
			g.drawOval(x, y, 1, 1);
		}
		//释放图形上下文
		g.dispose();
		try{
			//输出图像到页面
			ImageIO.write(image, "JPEG", os);
		}catch(IOException e)
		{
			return "";
		}
		return strEnsure;	
	}
}


index.jsp展示登录主界面,其代码如下:

<html>
<body>
<form action="check.jsp" method="post">
用户名:<input type="text" name="username"/> <br>
密  码<input type="password" name="password"> <br>
验证码:<input type="text" name="certCode"/>
<%-- 调用image.jsp显示验证码图片--%>
<img src="image.jsp"> <br>
<input type="submit" value="确定"/>
</form>
</body>
</html>

image.jsp负责调用JavaBean显示验证码图片,以及将得到的string形式验证码放入session中。其代码如下:

<jsp:useBean id="image" scope="session" class="test.Image"/>
<%
//得到生成的验证码,并将验证码以图片方式输出
String str=image.getCertPic(0,0,response.getOutputStream());
//将认证码存入session
session.setAttribute("certCode",str);
 %>

check,jsp负责比对用户输入的验证码和图片显示的验证码是否一致,其代码如下:

<%
//得到用户输入的验证码
String certCode=request.getParameter("certCode");
//比对用户输入的验证码和生成的验证码是否相同
if(certCode.equals((String)session.getAttribute("certCode")))
	out.print("验证码输入正确");
	else
		out.print("验证码输入错误");
 %>

运行index.jsp进入登陆界面,截图如下:


1.若输入正确的验证码,截图如下:


点击”确定“后跳转到check.jsp页面,显示输入验证码正确:


2.若输入错误的验证码,截图如下:


点击”确定“后跳转到check.jsp页面,显示输入验证码错误:





  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值