`

java 生成验证码的servlet类

阅读更多
1. 生成验证码的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.io.PrintWriter;
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;

import com.***.constant.Constant;


public class ImageValidate extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 2198678289097775859L;
	/**
	 * Constructor of the object.
	 */
	public ImageValidate() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	private String name;
	/**
	 * The doGet method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		
	    OutputStream outputStream = null;
	    
	    try {
	    	outputStream =  response.getOutputStream();
	     // 在内存中创建图象
	        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.CENTER_BASELINE, 18));
	        // 画边框
	        // g.setColor(new Color());
	        // g.drawRect(0,0,width-1,height-1);
	        // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
	        g.setColor(getRandColor(160, 200));
	        for (int i = 0; i < 40; 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);
	        }
	        // 将认证码存入SESSION
	        HttpSession session=request.getSession();
	        session.setAttribute(Constant.LOGIN_VALIDATE_IMAGE, sRand);
	        // 图象生效
	        g.dispose();
	        // 输出图象到页面
	        ImageIO.write(image, "JPEG",outputStream);
	        outputStream.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            outputStream.close();
        }
        
		

	}

	/**
	 * 给定范围获得随机颜色
	 * 
	 * @param fc
	 * @param bc
	 * @return
	 */
	private static 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);
	}

	/**
	 * The doPost method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to
	 * post.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the POST method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * Initialization of the servlet. <br>
	 * 
	 * @throws ServletException
	 *             if an error occure
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}



2.web.xml 配置

<servlet>
    <servlet-name>ImageValidate</servlet-name>
    <servlet-class>com.***.web.servlet.ImageValidate</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ImageValidate</servlet-name>
    <url-pattern>/servlet/imageValidate</url-pattern>
  </servlet-mapping>



3.页面调用

<div class="login-tr">
	            	<div class="login-td-1 ft-sz-12 ft-cl-n">验证码:</div>
	                <div class="login-td-2"><input type="text" class="tt-text-yz tt-text" name="validateCode"> 
	                <span>
	                <img id="imgValidateCode" src="${BasePath}/servlet/imageValidate" width="55" height="20" align="top" border="0" style="cursor:hand"/>
	                </span>
	                <a href="javascript:reloadCode();">看不清?</a></div>
	            </div>
分享到:
评论

相关推荐

    java web笔记之servlet生成验证码

    1. 创建Servlet类:首先,我们需要创建一个继承自`javax.servlet.http.HttpServlet`的类,比如`IdentityServlet`。 2. 实现服务方法:重写`doGet`或`doPost`方法,因为验证码通常在HTTP GET请求中生成,所以我们...

    java代码生成验证码(servlet)

    java代码生成验证码(servlet).送给需要的人吧。

    java生成图片验证码

    2. ImageServlet.java:这是一个Servlet类,它处理HTTP请求,调用`ValidateCodeImageCodeMade`类的方法生成验证码,然后将生成的图像以流的形式响应给客户端。Servlet需要配置在web.xml中,以监听特定的URL路径,当...

    java生成验证码(servlet)

    验证码是每个网站必不可少的要素...此代码就是用servlet生成随机生成验证码

    利用servlet动态生成验证码

    首先,我们需要创建一个Servlet类。在Java中,Servlet是一个继承自javax.servlet.http.HttpServlet的类。在该类中,我们重写doGet或doPost方法,因为这两个方法会在HTTP请求对应的方法类型(GET或POST)被调用时执行...

    java验证码生成Servlet

    j a v a 服 务 器 端 Servlet 验 证 码 的 生 成 代 码

    Java-servlet生成验证码

    正在学习Java,在教程书和网上不断的学习。servlet 提供了 Java 强大的 web 交互,在这个小项目中,我用servlet 实现了在web上生成验证码的功能,正在入门Java的同学不妨试试。

    java生成验证码代码(工程)

    java生成验证码代码 主要:一个生成验证码的servlet,一个jsp页面,另外还需要配置下web.xml即可

    JAVA实现网站验证码功能demo(servlet)

    - 首先,创建一个Servlet类,如`VerificationCodeServlet`,继承`HttpServlet`。 - 在`doGet`方法中,生成一个随机字符串作为验证码。这个字符串通常包含数字和字母,长度可自定义,例如4位。 - 使用`Random`类...

    java 生成动态gif 验证码

    - **Servlet**:在Servlet中调用工具类的方法,生成验证码并将其保存到服务器的一个临时目录,同时将验证码内容保存在Session中,以供后续验证使用。 - **响应客户端**:Servlet返回生成的GIF图像到客户端,通常...

    Servlet生成图片验证码

    1. **创建Servlet**:首先,我们需要创建一个Servlet类,比如`VerificationCodeServlet`,继承自`javax.servlet.http.HttpServlet`。 2. **生成随机字符串**:在Servlet中,我们需要生成一个随机字符串,通常包含...

    java生成验证码代码

    本示例中的"java生成验证码代码"是利用Java的Servlet技术来实现的,配合HTML和JavaScript,为用户提供交互式的验证码功能。 首先,我们来看核心的Java类`ValiImg.java`。这个类通常会继承自`HttpServlet`,并重写`...

    servlet生成验证码

    在IT领域,特别是Web开发中,验证码是一种常见的安全机制,用于区分...总之,使用JSP和Servlet技术生成验证码是一种有效提升Web应用安全性的方法,通过合理设计和实现,可以有效地抵御自动化攻击,保护用户数据安全。

    servlet生成验证码图片

    `servlet`生成验证码图片是通过服务器端动态创建一个包含随机字符的图像,用户需要输入图像中显示的文字或数字来验证其身份。以下将详细解释这个过程及其相关知识点: 1. **Servlet**:Servlet是Java中用于扩展...

    Java servlet 自动生成 图片验证码 生成 Java源码

    Java servlet 自动生成 图片验证码 生成 Java源码

    java用servlet实现登陆验证码

    总的来说,这个Java Servlet验证码实现涵盖了Java Web开发的基础知识,包括Servlet生命周期、HTTP会话管理、图像处理以及随机数生成。理解这个过程对于提升Web应用的安全性是非常有帮助的。通过这个小例子,开发者...

    登录验证码servlet

    3. **图像处理**:验证码Servlet会使用Java的`java.awt`和`javax.imageio`库来创建和处理图像。这包括创建画布、绘制字符串、添加噪声以及保存和发送图像给客户端。 4. **存储和验证**:生成的验证码字符串需要存储...

    Servlet生成动态验证码

    `java.util.Random`类是生成随机数的基础,可以用于生成整数、浮点数等。在验证码生成中,我们需要生成一系列不重复的字符,这可能需要用到`nextInt()`和`nextDouble()`方法。 6. 验证码的验证: 当用户输入...

    Java 生成验证码示例

    - 一个Servlet(如`GenerateCodeServlet.java`),处理HTTP请求,生成验证码图片,并将验证码值存储在会话中。 - 一个JSP页面(如`authCode.jsp`),展示验证码图片并接收用户输入。 - 可能还有配置文件(如`web.xml...

    使用Servlet生成图片验证码

    `index.jsp`文件通常是用户首次请求验证码的页面,它可能包含一个HTML表单,用户可以通过点击按钮触发Servlet生成验证码。表单的ACTION属性应该指向我们的Servlet。 `result.jsp`文件则用于显示验证结果。当用户...

Global site tag (gtag.js) - Google Analytics