`
MoonMonster
  • 浏览: 36709 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

jsp---网页验证码

    博客分类:
  • jsp
阅读更多

用来实现网页中的随机验证码功能,当然,只是实现了该出现功能,并没有实现判断对错功能,要做的话其实也是很简单的。

 

 

package servlet;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**
 * @author Chalmers
 * @version 创建时间:2016年3月10日 下午7:41:25
 */
public class ImageServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;
	// 随机出现的字符
	private static final String CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	static Random random = new Random();
	// 字符长度为6
	private static final int NUM = 6;

	/**
	 * 获得随机字符串
	 * 
	 * @return String
	 */
	private String getRandomString() {

		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < NUM; i++) {
			// 追加
			sb.append(CHARS.charAt(random.nextInt(CHARS.length())));
		}

		return sb.toString();
	}

	/**
	 * 返回字体颜色
	 * 
	 * @return Color
	 */
	private Color getFontColor() {
		Color c = null;

		// 采用rgb形式的颜色,随机生成三个小于255的整数
		c = new Color(random.nextInt(255), random.nextInt(255),
				random.nextInt(255));

		return c;
	}

	/**
	 * 获得背景颜色
	 * 
	 * @return Color
	 */
	private Color getBgColor(Color c) {

		// 采用与字体不一样的颜色
		// 为了避免字体与背景颜色一样,而影响观察
		return new Color(255 - c.getBlue(), 255 - c.getGreen(),
				255 - c.getRed());
	}

	@Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// 得到session对象,用来存储随机字符串的值
		HttpSession session = request.getSession(true);
		response.setContentType("image/jpeg");

		// 得到随机字符串
		String randomString = getRandomString();
		session.setAttribute("randomString", randomString);
		// 设置图片的宽和高
		int width = 90;
		int height = 30;
		// 得到字体颜色
		Color fontColor = getFontColor();
		// 得到背景颜色
		Color bgColor = getBgColor(fontColor);

		// 创建一个图片对象(该图片放置在内存中)
		BufferedImage image = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_BGR);
		// 创建绘图对象,从image得到绘图对象,会把数据绘制到image上
		Graphics2D g = image.createGraphics();
		// 设置字体样式
		g.setFont(new Font("宋体", Font.BOLD, 24));
		// 设置背景颜色
		g.setColor(bgColor);
		// 对图片进行填充
		g.fillRect(0, 0, width, height);

		// 设置字体颜色
		g.setColor(fontColor);
		// 在图片上绘制字符串
		for (int i = 0; i < randomString.length(); i++) {
			g.drawString(randomString.charAt(i) + "", 8 + i * 12, 22);
		}
		// 画出干扰点
		for (int i = 0, n = random.nextInt(100); i < n; i++) {
			// 设置点的位置以及大小
			g.fillRect(random.nextInt(width), random.nextInt(height), 1, 1);
		}
		// 将图片输出到浏览器中
		ServletOutputStream outStream = response.getOutputStream();
		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outStream);

		encoder.encode(image);
		outStream.flush();

		outStream.close();
	}
}

 

 

在网页中使用

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<img src="ImageServlet" />
</body>
</html>

 

 

当然,要记得在xml文件中配置servlet

<servlet>
	<servlet-name>ImageServlet</servlet-name>
	<servlet-class>servlet.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>ImageServlet</servlet-name>
	<url-pattern>/ImageServlet</url-pattern>
</servlet-mapping>

 

1
4
分享到:
评论

相关推荐

    jsp页面验证码---源码

    用户在访问网页时,服务器会生成一个验证码并将其存储在服务器端,同时展示给客户端。用户输入所见的验证码,服务器端验证输入是否与原始值匹配,以此判断操作是否合法。 **2. JSP验证码的实现步骤** - **生成随机...

    Jsp-图片验证码及刷新

    在网页应用中,图片验证码(CAPTCHA)是一种广泛使用的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、恶意登录等。它要求用户输入显示在图片中的随机字符,以此来验证用户是人而不是计算机...

    oltl图形验证码-jsp

    在这个"oltl图形验证码-jsp"的案例中,我们关注的是如何在JavaServer Pages (JSP) 中实现基于Ajax的图形验证码功能。 首先,我们需要理解JSP的基础。JSP是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码,...

    实验五 AJAX开发及JSP验证码

    实验五主要涵盖了AJAX技术的运用以及JSP验证码的开发,这两个知识点对于前端开发者来说是至关重要的。AJAX,即Asynchronous JavaScript and XML(异步JavaScript和XML),它允许网页在不重新加载整个页面的情况下与...

    jsp图形验证码源码

    首先,我们需要了解JSP(JavaServer Pages)是Java的一种服务器端脚本语言,它允许开发者在HTML页面中嵌入Java代码,以动态生成网页内容。在这个案例中,我们将用JSP来生成和处理图形验证码。 图形验证码的主要功能...

    jsp 验证码(servlet)

    接下来,JSP页面接收验证码图像并在网页上显示。JSP代码可能包含一个img标签,其src属性指向Servlet的URL,以请求验证码图像。 用户填写表单并提交时,会携带验证码值。Servlet接收到请求后,会从HttpSession中获取...

    jsp-image.zip_文字识别 java_验证码识别

    首先,我们需要理解JSP(JavaServer Pages)是Java平台上的一个Web开发技术,它允许开发人员在HTML页面中嵌入Java代码,以动态生成网页内容。在这个项目中,JSP将作为后端处理验证码识别请求的接口。 验证码识别...

    JSP了图形验证码-汉字

    【JSP图形验证码-汉字】是一种用于网络安全的身份验证机制,主要目的是防止自动化程序(如机器人或爬虫)进行恶意操作,比如防止批量注册、刷票等。在网页开发中,JSP(JavaServer Pages)是一种动态网页技术,可以...

    JSP网页中的验证码

    通过以上介绍,我们可以看到在JSP网页中实现验证码涉及到服务器端生成、客户端展示、用户验证等多个环节,需要综合运用Java、HTML、CSS和JavaScript等技术。理解这些知识点对于JSP开发者来说至关重要,有助于构建更...

    JSP验证码实现--解决getOutStream()引发的问题

    JSP是Java的一种视图技术,可以用来生成动态网页内容,非常适合用于这种交互式功能的实现。 在`Image.jsp`中,我们需要创建一个能够生成随机验证码并将其显示在图像上的过程。以下是一些关键步骤: 1. **生成随机...

    jsp中实现验证码刷新功能

    在JSP(JavaServer Pages)中实现验证码刷新功能是提高用户体验的重要一环,因为这允许用户在验证码无法正常显示或模糊不清时,无需刷新整个页面就能获取新的验证码。下面我们将详细探讨如何在JSP中实现中文验证码...

    验证码jsp源代码

    1. **JSP(JavaServer Pages)**:JSP是Java平台上的动态网页技术,允许开发者将HTML、CSS、JavaScript与Java代码混合编写,服务器端执行Java代码并返回结果到客户端浏览器。在这个验证码系统中,JSP负责展示带有...

    JSP 随机验证码

    总的来说,JSP生成的数字验证码结合了Java的强大功能和网页的交互性,提供了一种简单而有效的用户验证方法。在开发过程中,确保验证码的安全性和用户体验是至关重要的。通过对验证码的不断刷新和复杂化设计,我们...

    5种JSP验证码的源代码.rar

    在Web开发中,JSP(JavaServer Pages)是常用的服务器端脚本语言,用于创建动态网页。这个压缩包"5种JSP验证码的源代码.rar"提供的是五种不同的JSP验证码实现方式。下面我们将详细探讨这五种验证码的实现原理和关键...

    Jsp图片验证码

    `JSP`(JavaServer Pages)是Java的一种动态网页技术,可以用来生成图片验证码。下面我们将详细探讨如何在JSP中创建图片验证码以及验证用户输入的验证码是否正确。 ### 1. 图片验证码的生成原理 图片验证码的基本...

    一个jsp 数字验证码的代码

    JSP是Java的一种服务器端脚本语言,用于生成动态网页内容。开发者可以在HTML或XML文档中嵌入Java代码,然后由JSP容器(如Tomcat)编译并执行这些代码,生成HTTP响应返回给客户端。 2. **数字验证码的原理**: ...

    JSP+servlet验证码登陆

    在这个"JSP+servlet验证码登陆"的场景中,我们主要讨论的是如何在MVC(Model-View-Controller)架构下实现一个安全的登录系统,特别是涉及到验证码的生成和验证。 验证码是一种防止恶意自动程序(如机器人)进行...

    JSP图形验证码项目

    **JSP图形验证码项目**是基于Java Web技术实现的一个安全登录功能模块,主要涉及的技术包括JSP(JavaServer Pages)和图形验证码。在这个项目中,我们重点探讨如何使用JSP来创建用户登录界面,并结合图形验证码来...

    jsp用户登录验证码

    - **JSP (JavaServer Pages)**: Java平台上的动态网页技术。 - **Struts**: 一个基于MVC模式的Java Web框架。 - **HTML**: 前端标记语言。 - **Apache Commons Lang**: 提供了一系列辅助类和工具方法的库。 #### 三...

    JSP随机验证码实例源码

    在网页开发中,验证码是一种广泛使用的安全机制,用于防止自动化的机器人或恶意脚本进行非法操作,如批量注册、恶意登录等。在这个JSP随机验证码实例中,我们将深入探讨其工作原理、实现方法以及源码解析。 验证码...

Global site tag (gtag.js) - Google Analytics