在jsp页面里怎么样刷新用Servlet产生的验证码?
<input type="text" name="Rand" maxlength="4" size="4" />&nbsp;<img border="0"  src="validatecodeservlet" alt=""/>
请高手赐教

解决方案 »

  1.   

    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import com.sun.image.codec.jpeg.*;
    import java.awt.*;
    import com.sun.image.codec.jpeg.*;
    import java.awt.image.BufferedImage;
    import java.awt.image.DataBuffer;
    import java.awt.geom.GeneralPath;
    import javax.swing.*;
    import java.math.*;
    public class Servlet1
            extends HttpServlet {
    //Process the HTTP Get request
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            response.setContentType(request.getContentType());
            response.setContentType("image/jpeg"); //必须设置ContentType为image/jpeg
            int length = 4; //设置默认生成4个数字
            Date d = new Date();
            long lseed = d.getTime();
            java.util.Random r = new Random(lseed); //设置随机种子
            if (request.getParameter("length") != null) {
                try {
                    length = Integer.parseInt(request.getParameter("length"));
                }
                catch (NumberFormatException e) {
                }
            }
            StringBuffer str = new StringBuffer();
            for (int i = 0; i < length; i++) {
                str.append(r.nextInt(9)); //生成随机数字
            }
    //可以在此加入保存验证码的代码
    //创建内存图像
            BufferedImage bi = new BufferedImage(40, 16, BufferedImage.TYPE_INT_RGB);
            Graphics2D g = bi.createGraphics();
            g.clearRect(0, 0, 16, 40);
            g.setColor(Color.RED);
            g.drawString(str.toString(), 4, 12);
            try {
    //使用JPEG编码,输出到response的输出流
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.
                        getOutputStream());
                JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
                param.setQuality(1.0f, false);
                encoder.setJPEGEncodeParam(param);
                encoder.encode(bi);
            }
            catch (Exception ex) {
            }
        }
    }然后在需求显示验证码的加入以下代码就可以了<img alt="" src="/WebModule1/servlet1" width="40" height="16"/> 
       刷新页面即可
     
     
      

  2.   

    可以做一个按钮或者连接用onclick事件触发javascript再发一次请求
      

  3.   

    看我的Blog里面有,直接点击图片就可以刷新。
      

  4.   

    2楼的方法可以..J2EE技术交流QQ群:6890959
    欢迎大家一起来切磋交流..
    共同进步..
      

  5.   

    我不会写javascript再发一次请求,大家能不能说说具体怎么做,验证码我已经写完了我想加入刷新功能,不是刷新页面,而是刷新验证码
      

  6.   

    <img alt="看不清楚?点击更换验证码" src="/WebModule1/servlet1" width="40" height="16" onclick="this.src='/WebModule1/servlet1'"/> 
      

  7.   

    修改图片的src属性,给它重新赋值就可以刷新图片,
    但是由于缓存的问题,如果两次都是同样的值,浏览器一般都不会刷新,所以需要给图片连接每次做一点没有影响改动如:
    <img alt="看不清楚?点击更换验证码" src="/WebModule1/servlet1" width="40" height="16" onclick="this.src='/WebModule1/servlet1'+Math.random()+100"/>
      

  8.   

    上面onclick里改成如下:
    onclick="this.src='/WebModule1/servlet1?a='+Math.random()+100"
      

  9.   

    把<img>元素的src属性值重新指定一下就可以了。<img src="checkcode" id="cc" />
    <a href="javascript:changeCode();">看不清</a><script>
    function changeCode()
    {
      document.getElementById("cc").src="checkcode";
    }
    </script>