我写的验证码 是个servlet  web.xml
    <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>Code</servlet-name>
    <servlet-class>com.nbgov.util.Code</servlet-class>
  </servlet>
   <servlet-mapping>
    <servlet-name>Code</servlet-name>
    <url-pattern>/servlet/Code</url-pattern>
  </servlet-mapping>
------------------代码-------------------- package com.nbgov.util;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;public class Code extends HttpServlet {
  //更改输出样式
  private static final String CONTENT_TYPE = "image/jpeg";
  //Initialize global variables
  public void init() throws ServletException {
  }
  //Process the HTTP Get request
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
 
    //获得 输出 对象
    java.io.OutputStream out=response.getOutputStream();
    //获得 缓存图像
    java.awt.image.BufferedImage image=new java.awt.image.BufferedImage(60,20,java.awt.image.BufferedImage.TYPE_INT_RGB);
    //获得绘图对象
    java.awt.Graphics g=image.getGraphics();
    //设置背景颜色
    g.setColor(java.awt.Color.WHITE);
    //设置绘制区域
    g.fillRect(0,0,60,20);
    //输出]字体
    g.setFont(new java.awt.Font("宋体",java.awt.Font.BOLD,18));
//声明存储随机数的变量
    String str="";
//产生随机数
    for(int i=0;i<4;i++){
      int num=(int)(java.lang.Math.random()*10);
      //把随机数进行保存
      str+=String.valueOf(num);
      //设置随机 数 颜色
      g.setColor(java.awt.Color.BLACK);
      g.drawString(String.valueOf(num),13*i+6,17);
    }
   
    //实例化会话对象
    HttpSession session=request.getSession(true);
    session.setAttribute("code",str);    //释放绘图对象
    g.dispose();
    //从缓存中输出图像
    javax.imageio.ImageIO.write(image,"JPEG",out);
  }
  //Process the HTTP Post request
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
  }
  //Clean up resources
  public void destroy() {
  }
}
-----------------------jsp---------------<img name="secimg" src="/NbgovBszn/servlet/Code" alt="看不清楚?换一张"
width="40" height="20" onClick="document.secimg.src='/NbgovBszn/servlet/Code?t='+(new Date()).getTime(); return false" />-------------------action判断---------------
  HttpSession session = request.getSession(); // 获取session
String check = ""; // 定义一个空字符串

String code = request.getParameter("seccode");// 获取前台输入的验证吗
if (session.getAttribute("code") != null) {
// 获取后台生成的验证码的值
check = session.getAttribute("code").toString();
}
if (!check.trim().equals(code.trim())) {// 如果输入的验证码和生成的验证码 不相同
 request.setAttribute("result", "验证码输入错误,请重新输入!"); //跳转错误页面
return mapping.findForward(BussTurn.Turn_Error);
}