java日志与验证码

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java日志:

日志的网上很多也:

/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

相关文档
最新文档