- 浏览: 68345 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
风雨人生:
学习了,很好很强大....
解决JfreeChart柱状图数值显示在柱子顶端的问题 -
wuqi123321:
引用asdfasdfa
解决JfreeChart柱状图数值显示在柱子顶端的问题 -
yefeng:
我下了ru.nlmk.eclipse.plugins.prof ...
Java内存泄漏分析
/*1.定义图片类*/
package 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.http.HttpServletResponse;
public class RandImgCreater {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
//图片上的字符
private static final String CODE_LIST = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
private HttpServletResponse response = null;
private static final int HEIGHT = 20;//图片高度
private static final int FONT_NUM = 4;//图片上字符个数
private int width = 0;//图片宽度
private int iNum = 0;//图片上字符个数
private String codeList = "";//图片上的字符
private boolean drawBgFlag = false;
private int rBg = 0;//背景色
private int gBg = 0;//背景色
private int bBg = 0;//背景色
/**
*
* @param response
*/
public RandImgCreater(HttpServletResponse response) {
this.response = response;
this.width = 13 * FONT_NUM + 12;
this.iNum = FONT_NUM;
this.codeList = CODE_LIST;
}
/**
*
* @param response
* @param iNum 图片上字符个数
* @param codeList 图片上的字符
*/
public RandImgCreater(HttpServletResponse response, int iNum, String codeList) {
this.response = response;
this.width = 13 * iNum + 12;
this.iNum = iNum;
this.codeList = codeList;
}
/**
* 生成图片
* @return 图片上的字符
*/
public String createRandImage() {
BufferedImage image = new BufferedImage(width, HEIGHT,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
Random random = new Random();
//自定义图片背景颜色
if (drawBgFlag) {
g.setColor(new Color(rBg, gBg, bBg));
g.fillRect(0, 0, width, HEIGHT);
} else {//随机生成图片背景颜色
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, HEIGHT);
for (int i = 0; i < 155; i++) {
g.setColor(getRandColor(140, 200));
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);
}
}
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
String sRand = "";//随机生成的字符串
for (int i = 0; i < iNum; i++) {
int rand = random.nextInt(codeList.length());
String strRand = codeList.substring(rand, rand + 1);
sRand += strRand;
g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
g.drawString(strRand, 13 * i + 6, 16);
}
g.dispose();
try {
ImageIO.write(image, "JPEG", response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
return sRand;
}
/**
* 设置背景颜色
* @param r
* @param g
* @param b
*/
public void setBgColor(int r, int g, int b) {
drawBgFlag = true;
this.rBg = r;
this.gBg = g;
this.bBg = b;
}
/**
* 随机生成颜色
* @param fc
* @param bc
* @return
*/
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);
}
}
/*2.配置在servlet中*/
package servlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class ImageServlet1
*/
public class ImageServlet1 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ImageServlet1() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
}
/**
* @see Servlet#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("===========request==============");
HttpSession session=request.getSession(true);
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
RandImgCreater rc = new RandImgCreater(response);
// RandImgCreater rc = new RandImgCreater(response,8,"abcdef");
// rc.setBgColor(100,100,100);
String rand = rc.createRandImage();
session.setAttribute("rand", rand);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
}
/*3.jsp界面应用*/
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title here</title>
<script type="text/javascript" src="/js/jquery.js"></script>
</head>
<body>
<%
String code=request.getParameter("code");
if(session.getAttribute("rand")!=null&&((String)session.getAttribute("rand")).equalsIgnoreCase(code)){
out.println("<span style=\"color:#FF0000\"> 验证成功!</span>");
}
%>
<form name="frm" method="post" action="./myrandTest.jsp">
Hello Image Test<br/>
checkCode:<img id="img_check" src="http://localhost:8080/mailreader/ImageServlet1" >
<a href="#" onclick="getpic();">看不清换张图片</a>
<br />
please input the checkCode:<input type="text" name="code" value=""><br />
<input type="submit" name="btn1" value="check"></form>
</body>
<script type="text/javascript">
function getpic(){
var requesturl="http://localhost:8080/mailreader/ImageServlet1?d="+new Date();
document.getElementById("img_check").src=requesturl;
//alert(document.getElementById("img_check").src);
return false;
}
</script>
</html>
发表评论
-
使用filter拦截servlet和jsp页面的内容,进行过滤后输出
2013-06-04 13:42 1195http://blog.csdn.net/shuwei00 ... -
连接池问题
2012-07-22 14:15 746connection耗尽不一定就是由connectio ... -
LuceneTest
2011-06-10 00:38 881/** * */ package com.test ... -
读写文件
2011-05-15 18:16 1045import java.io.BufferedInputStr ... -
流方式下载文章
2010-10-11 18:44 783流方式下载文章 -
tomcat 开启SSL
2009-12-10 23:37 18921.生成 KeyStore D:\jdk1.6.0_11 ... -
commons-dbutils 使用
2009-10-09 17:26 1228import java.sql.Connection; im ... -
JBPM数据库表说明
2009-09-28 18:09 1058JBPM数据库表说明 -
中文乱码问题解决,过滤器配置,get post提交乱码,filter,struts乱码,jsp乱码
2009-09-25 18:25 1265http://heisetoufa.iteye.com/blo ... -
JBoss JBPM 实践系列(一)--- 安装配置(Tomcat 6.0 + MySQL 5.1)
2009-09-25 02:02 729http://zhaipuhong.iteye.com/blo ... -
常用网站
2009-06-17 00:35 0http://www.dojochina.com/ ... -
如何卸载和安装Wscript.Shell,FSO和stream对象
2008-11-23 00:16 1771据需要不同我们经常会卸载和安装Wscript.Shell,FS ... -
javascript调用本地的exe程序
2008-11-23 00:00 2404http://dayone.iteye.com/blog/16 ... -
log4j配置文件
2008-11-18 14:02 1116log4j.rootLogger=error,stdout l ... -
Java内存泄漏分析
2008-11-13 19:34 1999http://www.51testing.com/html/9 ... -
JAVA内存泄漏——内存泄漏原因和内存泄漏检测工具(zt)
2008-11-13 19:33 2156http://www.blogjava.net/galaxyp ... -
解决JfreeChart柱状图数值显示在柱子顶端的问题
2008-11-13 16:04 11971http://topic.csdn.net/u/2008061 ... -
主题:通过GC输出分析内存泄露问题
2008-11-12 17:44 0http://www.iteye.com/post/70863 ... -
详解MANIFEST.MF文件
2008-10-26 23:19 795http://www.java3z.com/cwbwebhom ... -
JAR 文件揭密
2008-10-26 23:19 802http://www-128.ibm.com/develope ...
相关推荐
jsp图片验证码 希望对大家有用 防止机器注册
总的来说,生成JSP图片验证码涉及了Java图像处理、随机数生成、Session管理等多个知识点。通过合理的实现,可以有效地防止自动化攻击,保护网站的安全。在实践中,我们需要不断优化验证码的设计,以平衡用户体验和...
`JSP`(JavaServer Pages)是Java的一种动态网页技术,可以用来生成图片验证码。下面我们将详细探讨如何在JSP中创建图片验证码以及验证用户输入的验证码是否正确。 ### 1. 图片验证码的生成原理 图片验证码的基本...
【标题】"jsp图片验证码源代码 自由模块"涉及的知识点主要集中在Java服务器页面(JSP)技术、图片验证码的实现以及模块化的编程思想。验证码通常用于防止自动化程序(如机器人)对网站进行恶意操作,例如批量注册、...
总的来说,JSP图片验证码的实现涉及了Java图形处理、随机数生成、字符编码和图像处理等多个方面的知识,是软件开发中常用的一种安全防护手段。通过这种方式,可以有效防止恶意自动化程序对网站的攻击,保护用户的...
JSP 生成随机验证码图片(经典老代码)
**JSP验证码图片详解** 验证码(CAPTCHA)是一种防止恶意自动化程序(如机器人或爬虫)进行非法操作的安全机制。在网页开发中,JSP(Java Server Pages)被广泛用于生成动态的、难以通过机器自动识别的验证码图片。...
总结:本实例通过Java的图形处理能力生成图片验证码,结合JSP技术将验证码返回给客户端,并将其值存储在session中以供验证。这涉及到了Java图形编程、HTTP响应处理、session管理和安全性实践等多个IT领域的知识点。...
### JSP页面验证码生成图片详解 #### 一、概述 在网站登录或注册过程中,为了防止恶意登录或机器人操作,通常会使用验证码机制。本文档详细介绍了一种利用JSP技术生成验证码图片的方法。该方法通过Java后端动态...
在本主题“利用jsp生成图片验证码”中,我们将探讨如何在JavaServer Pages (JSP)上下文中创建一个简单的图片验证码,而无需使用Servlet。首先,我们要明白JSP是Java Web开发中的视图层技术,它允许我们在HTML页面中...
在网页应用中,图片验证码(CAPTCHA)是一种广泛使用的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、恶意登录等。它要求用户输入显示在图片中的随机字符,以此来验证用户是人而不是计算机...
生成JSP图片验证码的步骤如下: 1. **生成随机字符串**:首先,我们需要编写一个函数来生成随机字符串,这个字符串将作为验证码的内容。我们可以从字母和数字的集合中随机选择字符,确保字符串长度适中,比如4到6位...
在JSP中,我们可以创建一个Servlet来生成随机的图片验证码。这个Servlet的主要任务是生成一个不可预测的字符串,并将其渲染为图像。以下是一个简单的步骤: 1. **生成随机字符串**:通常包含字母和数字,长度可...
生成JSP图片验证码的过程包括以下几个关键步骤: 1. **生成随机字符串**:首先,我们需要创建一个包含字母和数字的随机字符串。这可以通过Java的`Random`类和`StringBuilder`类来实现,或者使用更安全的`...
地区性 城区震城地夸大城城城城城震在在城城城老大哥
在Java Web开发中,JSP(JavaServer Pages)可以用来创建动态的、包含随机验证码的图片。以下我们将深入探讨JSP实现随机验证码的技术细节。 ### 1. 验证码的基本原理 验证码的核心在于生成一组难以被机器自动识别...
**JSP实现验证码数字图片详解** 验证码是一种常用的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如批量注册、频繁提交等。在Web开发中,JSP(JavaServer Pages)可以用来创建动态验证码图片。本文将...
图形验证码(CAPTCHA)是一种用于区分人类和机器的测试,通常表现为扭曲的字母或数字图片。其目的是防止自动化程序(如机器人或爬虫)滥用服务,例如在这里防止非法登录尝试。在JSP登录页面上,图形验证码会随机生成...
在Java Web开发中,JSP(JavaServer ...综上所述,创建一个JSP图片验证码涉及到Java图形处理、HTTP响应的操纵以及session管理等多个技术点。通过以上步骤,我们可以构建一个基本但有效的验证码系统,增强网站的安全性。