java登录界面代码非空验证,Java登录界面验证代码

最近刚好学到

servlet,网上碰到了这段代码,比较学习一下:

package com.servlet;

import

java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.IOException;

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;

import javax.servlet.http.HttpSession;

import

com.util.DaoConfig;

public class

ValidateCode extends HttpServlet {

private static

final long serialVersionUID = 1L;

private final

String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

private Color getRandColor(int fc, int bc) {

// 给定范围获得随机颜色

Random random = new Random();

if (fc > 255)

fc = 255;

if (bc > 255)

bc = 255;

int r = fc + random.nextInt(bc - fc);

int g = fc + random.nextInt(bc - fc);

int b = fc + random.nextInt(bc - fc);

return new Color(r, g, b);

}

// private

Font mFont=new Font("宋体", Font.PLAIN,12);//设置字体

// 处理post

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

public void

doGet(HttpServletRequest request, HttpServletResponse

response)

throws ServletException, IOException {

// 设置页面不缓存

response.setHeader("Cache-Control", "no-store");

response.setHeader("Pragma", "no-cache");

response.setDateHeader("Expires", 0);

response.setContentType("image/jpeg");

//

在内存中创建图象

int width = 90, height = 22;

BufferedImage image = new BufferedImage(width,

height,

BufferedImage.TYPE_INT_RGB);

//

获取图形上下文

Graphics g = image.getGraphics();

//

生成随机类

Random random = new Random();

//

设定背景色

g.setColor(getRandColor(200, 250));

g.fillRect(0, 0, width, height);

//

设定字体

g.setFont(new Font(DaoConfig.getValidateCodeFont(),

Font.BOLD + Font.ITALIC, 20));

//

画边框

// g.setColor(new Color());

// g.drawRect(0,0,width-1,height-1);

//

随机产生一些干扰线

g.setColor(getRandColor(160, 200));

for (int i = 0; i < 155; i++) {

int x = random.nextInt(width);

int y = random.nextInt(height);

int xl = random.nextInt(12);

int yl = random.nextInt(12);

g.drawLine(x, y, x + xl, y + yl);

}

//

取随机产生的认证码(6位字符)

StringBuffer sRand = new StringBuffer(6);

for (int i = 0; i < 6; i++) {

String rand = str.charAt(random.nextInt(36)) +

"";

sRand.append(rand);

// 将认证码显示到图象中

g.setColor(new Color(20 + random.nextInt(110), 20 +

random

.nextInt(110), 20 + random.nextInt(110))); //

调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成

g.drawString(rand, 13 * i + 6, 17);

}

//

将验证码存入 session

HttpSession session = request.getSession();

session.setAttribute("validateCode",

sRand.toString());

g.dispose();

// 输出图象到页面

ImageIO.write(image, "jpeg",

response.getOutputStream());

}

}

页面中:

border="1" title="看不清,请单击图片"

src="//servlet/ValidateCode"

οnclick="changeValidateCode();"/>

页面提交后采用

session.getAttribute("validateCode"); 来进行对比。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值