微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > Servlet/JSP >

JSP页面动态图片验证码

时间:2017-01-19 04:22  浏览:努力统计中...
很多新手对图片验证码不是很了解,最近自己也与做这个功能,于是决定把自己的用个代码给大家分享一下,接下来我们就来看看一个实例吧。其中包括jsp实现的动态验证码,以每次请
       很多新手对图片验证码不是很了解,最近自己也与做这个功能,于是决定把自己的用个代码给大家分享一下,接下来我们就来看看一个实例吧。其中包括jsp实现的动态验证码,以每次请求都随即生成5个数字为例,用法就是在JSP页面中取出该验证码的值,用session保存的,进行判断比较就可以了。工程架构如图:

       注意一点,其中commons-lang.jar就本项目需要加入,可能因为不同写法,此包可有可无,特此说明。同时页面使用了jquery,需要引入jquery-1.3.2.min.js文件。
       首先,先写一个动态图片生成的Servlet类--AuthCode.java,当然也可以使用Struts来完成这个功能,代码如下:

package com.fz.cloudsync.web.config;

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 org.apache.commons.lang.RandomStringUtils;
import javax.imageio.ImageIO;
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;

public class AuthCode extends HttpServlet {

 /**
  *
  */
 private static final long serialVersionUID = 1L;

 /**
  * Constructor of the object.
  */
 public AuthCode() {
  super();
 }

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

  /**
  * 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 {

  doPost(request, response);
 }

  /**
  * 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 {

  try {
   int width = 75;
   int height = 25;

   // 取得一个5位随机字母数字字符串
   String s = RandomStringUtils.random(5, true, true);

    // 保存入session,用于与用户的输入进行比较.
   // 注意比较完之后清除session.
   HttpSession session = request.getSession(true);
   session.setAttribute("authCode", s);

    response.setContentType("images/jpeg");
   response.setHeader("Pragma", "No-cache");
   response.setHeader("Cache-Control", "no-cache");
   response.setDateHeader("Expires", 0);

    ServletOutputStream out = response.getOutputStream();
   BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
   Graphics g = image.getGraphics();

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

    // 设定字体
   Font mFont = new Font("华文新魏", Font.HANGING_BASELINE, 18);// 设置字体

顶一下
(1)
50%
踩一下
(1)
50%
------分隔线------
栏目列表
推荐内容