用来实现网页中的随机验证码功能,当然,只是实现了该出现功能,并没有实现判断对错功能,要做的话其实也是很简单的。
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>
相关推荐
用户在访问网页时,服务器会生成一个验证码并将其存储在服务器端,同时展示给客户端。用户输入所见的验证码,服务器端验证输入是否与原始值匹配,以此判断操作是否合法。 **2. JSP验证码的实现步骤** - **生成随机...
在网页应用中,图片验证码(CAPTCHA)是一种广泛使用的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,如批量注册、恶意登录等。它要求用户输入显示在图片中的随机字符,以此来验证用户是人而不是计算机...
在这个"oltl图形验证码-jsp"的案例中,我们关注的是如何在JavaServer Pages (JSP) 中实现基于Ajax的图形验证码功能。 首先,我们需要理解JSP的基础。JSP是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码,...
实验五主要涵盖了AJAX技术的运用以及JSP验证码的开发,这两个知识点对于前端开发者来说是至关重要的。AJAX,即Asynchronous JavaScript and XML(异步JavaScript和XML),它允许网页在不重新加载整个页面的情况下与...
首先,我们需要了解JSP(JavaServer Pages)是Java的一种服务器端脚本语言,它允许开发者在HTML页面中嵌入Java代码,以动态生成网页内容。在这个案例中,我们将用JSP来生成和处理图形验证码。 图形验证码的主要功能...
接下来,JSP页面接收验证码图像并在网页上显示。JSP代码可能包含一个img标签,其src属性指向Servlet的URL,以请求验证码图像。 用户填写表单并提交时,会携带验证码值。Servlet接收到请求后,会从HttpSession中获取...
首先,我们需要理解JSP(JavaServer Pages)是Java平台上的一个Web开发技术,它允许开发人员在HTML页面中嵌入Java代码,以动态生成网页内容。在这个项目中,JSP将作为后端处理验证码识别请求的接口。 验证码识别...
【JSP图形验证码-汉字】是一种用于网络安全的身份验证机制,主要目的是防止自动化程序(如机器人或爬虫)进行恶意操作,比如防止批量注册、刷票等。在网页开发中,JSP(JavaServer Pages)是一种动态网页技术,可以...
通过以上介绍,我们可以看到在JSP网页中实现验证码涉及到服务器端生成、客户端展示、用户验证等多个环节,需要综合运用Java、HTML、CSS和JavaScript等技术。理解这些知识点对于JSP开发者来说至关重要,有助于构建更...
JSP是Java的一种视图技术,可以用来生成动态网页内容,非常适合用于这种交互式功能的实现。 在`Image.jsp`中,我们需要创建一个能够生成随机验证码并将其显示在图像上的过程。以下是一些关键步骤: 1. **生成随机...
在JSP(JavaServer Pages)中实现验证码刷新功能是提高用户体验的重要一环,因为这允许用户在验证码无法正常显示或模糊不清时,无需刷新整个页面就能获取新的验证码。下面我们将详细探讨如何在JSP中实现中文验证码...
1. **JSP(JavaServer Pages)**:JSP是Java平台上的动态网页技术,允许开发者将HTML、CSS、JavaScript与Java代码混合编写,服务器端执行Java代码并返回结果到客户端浏览器。在这个验证码系统中,JSP负责展示带有...
总的来说,JSP生成的数字验证码结合了Java的强大功能和网页的交互性,提供了一种简单而有效的用户验证方法。在开发过程中,确保验证码的安全性和用户体验是至关重要的。通过对验证码的不断刷新和复杂化设计,我们...
在Web开发中,JSP(JavaServer Pages)是常用的服务器端脚本语言,用于创建动态网页。这个压缩包"5种JSP验证码的源代码.rar"提供的是五种不同的JSP验证码实现方式。下面我们将详细探讨这五种验证码的实现原理和关键...
`JSP`(JavaServer Pages)是Java的一种动态网页技术,可以用来生成图片验证码。下面我们将详细探讨如何在JSP中创建图片验证码以及验证用户输入的验证码是否正确。 ### 1. 图片验证码的生成原理 图片验证码的基本...
JSP是Java的一种服务器端脚本语言,用于生成动态网页内容。开发者可以在HTML或XML文档中嵌入Java代码,然后由JSP容器(如Tomcat)编译并执行这些代码,生成HTTP响应返回给客户端。 2. **数字验证码的原理**: ...
在这个"JSP+servlet验证码登陆"的场景中,我们主要讨论的是如何在MVC(Model-View-Controller)架构下实现一个安全的登录系统,特别是涉及到验证码的生成和验证。 验证码是一种防止恶意自动程序(如机器人)进行...
**JSP图形验证码项目**是基于Java Web技术实现的一个安全登录功能模块,主要涉及的技术包括JSP(JavaServer Pages)和图形验证码。在这个项目中,我们重点探讨如何使用JSP来创建用户登录界面,并结合图形验证码来...
- **JSP (JavaServer Pages)**: Java平台上的动态网页技术。 - **Struts**: 一个基于MVC模式的Java Web框架。 - **HTML**: 前端标记语言。 - **Apache Commons Lang**: 提供了一系列辅助类和工具方法的库。 #### 三...
在网页开发中,验证码是一种广泛使用的安全机制,用于防止自动化的机器人或恶意脚本进行非法操作,如批量注册、恶意登录等。在这个JSP随机验证码实例中,我们将深入探讨其工作原理、实现方法以及源码解析。 验证码...