`
kanpiaoxue
  • 浏览: 1777819 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Form 表单——生成校验码 的Servlet

阅读更多
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ValidateCode extends HttpServlet {

	private static final long serialVersionUID = 1L;

	// Process the HTTP Get request
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);

		// 在内存中创建图象
		int width = 60, height = 20;
		BufferedImage image = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);

		// 获取图形上下文
		Graphics g = image.getGraphics();

		// 生成随机类
		Random random = new Random();

		// 设定背景色
		g.setColor(getRandColor(200, 250));
		g.fillRect(0, 0, width, height);

		// 设定字体
		g.setFont(new Font("Times New Roman", Font.PLAIN, 18));

		// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
		g.setColor(getRandColor(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);
		}

		// 取随机产生的认证码(4位数字)
		String sRand = "";
		for (int i = 0; i < 4; i++) {
			String rand = String.valueOf(random.nextInt(10));
			sRand += rand;
			// 将认证码显示到图象中
			g.setColor(new Color(20 + random.nextInt(110), 20 + random
					.nextInt(110), 20 + random.nextInt(110)));// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
			g.drawString(rand, 13 * i + 6, 16);
		}

		HttpSession session = request.getSession();
		// 将认证码存入SESSION
		session.setAttribute("validateCode", sRand);

		// 图象生效
		g.dispose();
		OutputStream output = response.getOutputStream();

		// 输出图象到页面
		ImageIO.write(image, "JPEG", response.getOutputStream());
		output.flush();
		output.close();
	}

	// Process the HTTP Post request
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

	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);
	}

}

 

分享到:
评论

相关推荐

    ValidateForm:使用 jspservlet 进行简单的表单验证

    本项目“ValidateForm”使用Java的JSP(JavaServer Pages)和Servlet技术进行简单的表单验证,旨在帮助初学者理解如何在服务器端处理和验证用户提交的数据。 一、JSP简介 JSP是一种动态网页技术,它允许开发者将...

    转账系统设计——Servlet技术JavaBean技术Jsp技术.doc

    在这些页面中,通过设置表单的`action`属性,我们可以指定请求发送到哪个Servlet进行处理。 4. **转账流程**: - 用户通过JSP页面输入账号和密码登录,点击“登陆”按钮,表单数据通过POST方法提交到Servlet。 - ...

    servlet+jsp+验证注册功能

    这个页面通常包含`&lt;form&gt;`标签,它的`action`属性指向处理注册的Servlet,`method`属性设置为"POST",以匹配Servlet中的`doPost`方法。在表单中,我们可以使用`&lt;input&gt;`标签来创建输入字段,如用户名、密码、邮箱等...

    详细讲解—表单验证框架的实现

    前端使用HTML、CSS和JavaScript(如jQuery和jQuery Validate插件)创建和验证表单,后端(如Servlet)负责处理验证后的数据,如果验证失败,则返回错误信息供前端显示。整个过程确保了数据的有效性和安全性,提高了...

    jsp+servlet 简单实现注册,登录,购物车功能

    开发者可能会使用`&lt;form&gt;`标签创建表单,`&lt;input&gt;`标签定义输入字段,`&lt;button&gt;`提交表单,同时可能还会利用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)简化页面逻辑。 **2. ...

    servlet进行用户登录代码

    Servlet是Java Web开发中的一个核心组件,主要用于处理HTTP请求并生成响应。在本场景中,我们讨论的是如何使用Servlet实现用户登录功能。这个过程通常包括从客户端接收数据、验证数据以及向客户端返回结果。 首先,...

    服务器端表单验证 filter

    在表单验证场景中,`Filter`可以在用户提交表单后对请求进行拦截,检查数据的有效性,然后决定是否允许请求继续传递到目标资源(如Servlet或JSP页面)。 1. **创建Filter**: 首先,我们需要创建一个实现了`javax....

    JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能( 源码打包)

    通过`&lt;form&gt;`标签接收用户输入,然后通过`action`属性将请求提交给Servlet进行处理。 2. **JavaBean**:JavaBean是一种符合JavaBeans规范的Java类,通常用于封装数据和业务逻辑。在用户注册场景下,我们可以创建一...

    jsp+servlet实现最基本的注册登陆功能

    在服务器端,JSP会被转换为Servlet,然后编译成字节码执行。JSP中的Java代码可以用于控制页面逻辑,如数据处理和显示。例如,在注册和登录功能中,JSP可能包含表单元素,用户输入的数据可以通过`&lt;form&gt;`标签提交到...

    jsp.rar_jsp_jsp 登录_jsp 登录 代码_servlet注册_注册

    在JSP中,可以使用`&lt;form&gt;`标签定义表单,`&lt;input&gt;`标签创建输入字段,然后通过`action`属性指定提交的Servlet。登录验证通常在Servlet中完成,对比用户输入与数据库中的记录。 2. **Servlet注册**: 用户注册过程...

    Servlet编程:过滤器实验 文件代码

    通过这个实验,你可以深入理解Servlet过滤器的工作方式,以及如何在实际应用中利用它们来增强安全性、进行数据校验或实现其他功能。同时,这也是实践HTML5登录表单和Servlet交互的好机会。记得在编码时遵循良好的...

    J2EE——MyEclipse实现网页的登录和注册

    &lt;form action="RegisterServlet" method="post"&gt; 用户名:&lt;input type="text" name="username"&gt;&lt;br&gt; 密码:&lt;input type="password" name="password"&gt;&lt;br&gt; 确认密码:...

    图书管理系统的登录及数据传入

    当用户点击登录按钮,前端的表单数据会被发送到后台的Servlet,Servlet验证这些数据并调用相应的业务逻辑。然后,Servlet可能会重定向或转发到一个JSP页面,JSP根据后台处理的结果动态生成页面内容。 5. **安全性...

    基于jsp+servlet网上书城

    例如,可以使用`&lt;c:forEach&gt;`遍历列表,`&lt;c:if&gt;`进行条件判断,`&lt;form:form&gt;`处理表单提交等。 8. **Ajax异步请求**:为了提升用户体验,部分功能可能采用Ajax技术,如搜索书籍、添加书籍到购物车等,这样可以在不...

    Blog.rar_QQ空间 java_QQ空间jsp_blog_java qq空间_servlet blog

    开发者会定义`&lt;form&gt;`标签来接收用户输入,通过`&lt;jsp:include&gt;`或`&lt;jsp:forward&gt;`指令将请求转发给Servlet进行处理。 2. **Servlet**: Servlet是Java Web应用中的核心组件,负责处理HTTP请求并生成响应。在这个QQ...

    struts2 Ognl表单提交问题

    ### Struts2 OGNL 表单提交问题详解 #### 一、背景介绍 Struts2框架作为一款流行的企业级应用开发框架,在处理MVC架构方面有着独特的优势。其中,OGNL (Object-Graph Navigation Language) 作为一种强大的表达式...

    javaweb二维码生成

    2. **错误校验**:添加错误校验码,提高二维码在部分损坏情况下的可读性。常用的有RS(Reed-Solomon)错误纠正算法。 3. **模块分配**:将编码后的二进制数据分配到二维码的像素矩阵中,形成黑白相间的图形。 4. *...

    检验是否符合条件 表单 登录 交验

    JSP还可以结合Servlet或MVC框架(如Spring MVC)来处理表单提交,实现更复杂的业务逻辑。 “交验”在Web开发中通常指校验或者验证,确保数据完整性和安全性。在Java源代码中,这可能涉及到异常处理、数据绑定和验证...

    validation

    这通常在Servlet中实现,通过校验接收到的请求参数。 8. 验证框架:在实际开发中,可能会使用验证框架如Hibernate Validator或Apache Commons BeanUtils,它们提供了便捷的方法来进行复杂的验证,减少代码重复,...

    java用户密码修改

    表单提交后,后台JavaServlet或Filter会接收到请求,执行上述逻辑。同时,可以使用AJAX技术实现异步更新,提供更好的用户体验。 以下是一个简单的JSP表单示例: ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%&gt; ...

Global site tag (gtag.js) - Google Analytics