搜档网
当前位置:搜档网 › java日志与验证码

java日志与验证码

java日志与验证码
java日志与验证码

java日志:

日志的网上很多也:

https://www.sodocs.net/doc/1314605210.html,/view/ccb3ce1efc4ffe473368abdf.html

你自己看看。我们的系统里面一般都是自己写了一个程序。将用户的操作信息,IP,时间,操作内容写入我们数据库里面。

Tomcat的日志一般我们用绿色版,它自带有日志功能。

java验证码:

1 根据一个随机值,生成一个模糊图片,然后将随机值封装到session中。

1.1 生成图片的类:

package com.framework.security;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.Serializable;

import java.util.Random;

/**

*随机验证码

*User:

*Date:2006-11-2

*Time:11:31:00

*To change this template use File|Settings|File Templates.

*/

public class ImgCheckCode implements Serializable {

private String charRandomCode = "";

private BufferedImage imageRandomCode;

private int width;

private int height;

public ImgCheckCode(int width, int height) {

this.width = width;

this.height = height;

create(4);

}

public ImgCheckCode(int width, int height, int length) {

this.width = width;

this.height = height;

create(length);

}

public int getWidth() {

return width;

}

public void setWidth(int width) {

this.width = width;

}

public int getHeight() {

return height;

}

public void setHeight(int height) {

this.height = height;

}

public String getCharRandomCode() {

return charRandomCode;

}

public BufferedImage getImageRandomCode() {

return imageRandomCode;

}

private void create(int length) {

// 在内存中创建图象

imageRandomCode = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

// 获取图形上下文

Graphics g = imageRandomCode.getGraphics();

//生成随机类

Random random = new Random();

// 设定背景色

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

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

//设定字体

g.setFont(new Font("Times New Roman", Font.PLAIN, 18));

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到

g.setColor(getRandomColor(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);

}

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

String rand = String.valueOf(random.nextInt(10));

charRandomCode += rand;

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

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

random.nextInt(110), 20 + random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成

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

}

g.dispose();

}

/**

*给定范围获得随机颜色

*

*@param fc

*@param bc

*@return Color

*/

private Color getRandomColor(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);

}

}

2 进入登陆页面时,将生成的图片显示。

Action中调用图片生成类。将图片写入response的io流中

public void createCheckCode() throws Exception {

ImgCheckCode check = new ImgCheckCode(60,18);

session.setAttribute("charRandomCode",check.getCharRandomCode()); ImageIO.write(check.getImageRandomCode(),"JPEG",response.getOutputStr

eam());

}

页面调用:

3 拿着用户输入的值和session的值做比较,验证是否正确。

String checkCode = request.getParameter("randomCode");

String sessionCheckCode = (String) session.getAttribute("randomCode "); if (sessionCheckCode.equals(checkCode)) {

return false;

}

相关主题