servlet写的验证码.

解决方案 »

  1.   


    Java code
    package com.city.sxzlc.servlet;import java.awt.Color;
    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;public class AuthenticationCode extends HttpServlet {
        public AuthenticationCode() {
            super();
        }
        public void destroy() {
            super.destroy(); // Just puts "destroy" string in log
            // Put your code here
        }
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {         //验证码
            int width=70;
            int height=20;
            Integer[] a = new Integer[4];
            String randStr="";
            Random random = new Random();
            Color c = new Color(34,56,78);
            for(int i=0;i<4;i++)
                a[i] = random.nextInt(10);
            for(Integer ele:a)
                randStr+=ele;
            System.out.println(randStr);
            
            
            try{ 
            response.setContentType("image/jpeg");
            OutputStream out = response.getOutputStream();
            BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR); //feredImage(int width, int height, int imageType) 
            Graphics g = image.getGraphics();
            g.fillRect(1, 1, width, height);
            g.setColor(c);
            
            int i=5;
            i=5+random.nextInt(20);
            for(Integer ele:a) {//一个一个画
                g.drawString(ele.toString(), i+random.nextInt(5), 10+random.nextInt(10));
                i=i+8;
            }
            
            ImageIO.write(image, "jpeg", out);
            }catch(Exception e){e.printStackTrace();}
            request.getSession().setAttribute("authCode", randStr);
        }
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {        this.doGet(request, response);
        }
        public void init() throws ServletException {
        
        }}
      

  2.   

             <!-- 验证码  --> 
      <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>AuthenticationCode</servlet-name>
        <servlet-class>com.city.sxzlc.servlet.AuthenticationCode</servlet-class>
      </servlet>          <!-- 验证码     mapping  --> 
      <servlet-mapping>
        <servlet-name>AuthenticationCode</servlet-name>
        <url-pattern>/login/AuthenticationCode</url-pattern>
      </servlet-mapping>
      

  3.   


    <tr><td>验证码</td><td><input name="authCode" size=5><img src="../login/AuthenticationCode" alt=验证码 id=authCodeID></td><td></td></tr>