我想做一个验证码的程序,从网上找了一个servlet
然后进行了配置
 <servlet>
    <servlet-name>ImageServlet</servlet-name>
    <servlet-class>test.servlet.ImageServlet</servlet-class>  
  </servlet><servlet-mapping>
     <servlet-name>ImageServlet</servlet-name>
     <url-pattern>/ImageServlet</url-pattern>
  </servlet-mapping>servlet路径是不错的,然后再jsp中引用
<input type="text" id="verifyCode" name="verifyCode" size="6" styleClass="input-login"/>
<img alt="验证码" id="safecode" src="./ImageServlet">结果什么反应都没有,我试着在servlet中输出一些内容,运行后后台什么都没有,这是怎么回事?
生成验证码的代码是http://blog.csdn.net/sxpujs/archive/2009/04/03/4045559.aspx

解决方案 »

  1.   


    <img alt="验证码" id="safecode" src="/ImageServlet"> 
      

  2.   

    src="./ImageServlet" 这是什么路径,即不是绝对也不是相对路径。
      

  3.   

    <tr>
    <td width=140 align=right>验证码</td>
    <td align=left><img title="点击更换图片"
    src="<%=request.getContextPath() %>/view/page/validateCode.jsp"
    onclick="this.src='<%=request.getContextPath() %>/view/page/validateCode.jsp?random='+Math.random();" />
    <input name="validateCode" size=6 /></td>
    </tr>
      

  4.   

    <%@ page contentType="image/jpeg"
    import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%>
    <%!
    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);
        }    char randomChar() {
            Random random = new Random();
            int c = random.nextInt(58) + 65;
            if (c > 90 && c < 97)
                return randomChar();
            return (char) (c);
        }
    %>
    <%
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);    int width = 90, height = 35;
        BufferedImage image = new BufferedImage(width, height,
                BufferedImage.TYPE_INT_RGB);    Graphics2D g = (Graphics2D) image.getGraphics();
        Random random = new Random();    g.setColor(getRandColor(200, 250));
        g.fillRect(0, 0, width, height);
        g.setFont(new Font("Arial", Font.PLAIN, 26));    g.setColor(getRandColor(150, 180));
        for (int i = 0; i < 100; 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);
        }    String sRand = "";
        for (int i = 0; i < 4; i++) {
            char c = randomChar();
            sRand += c;
            g.setColor(new Color(20 + random.nextInt(110), 20 + random
                    .nextInt(110), 20 + random.nextInt(110)));
            int x = 18 * i + 6;
            int y = 26;
            double r = Math.random() - 0.5;
            g.rotate(r, x, y);
            g.drawString(c + "", x, y);
            g.rotate(-r, x, y);
        }    out.print(sRand);
        session.setAttribute("validateCode", sRand);    g.dispose();    ImageIO.write(image, "JPEG", response.getOutputStream());
        out.clear();
        pageContext.pushBody();
    %>这个是 validateCode.jsp 后面的random='+Math.random(); 一定不要忘了。 我以前忘了就是不显示。
      

  5.   

    页面上调用Servlet的路径,把.去掉