要看绝对路径,在图片上点右键,看图片的请求路径,直接放到地址栏,看有没有
一般是少了contextpath导致的

解决方案 »

  1.   

    我照着楼上的大哥说的那么做了 然后就报错误了 
    java.lang.NullPointerException
    sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1170)
    sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:147)
    sun.awt.FontConfiguration.<init>(FontConfiguration.java:72)
    sun.awt.windows.WFontConfiguration.<init>(WFontConfiguration.java:24)
    sun.awt.Win32GraphicsEnvironment.createFontConfiguration(Win32GraphicsEnvironment.java:291)
    sun.java2d.SunGraphicsEnvironment$1.run(SunGraphicsEnvironment.java:186)
    java.security.AccessController.doPrivileged(Native Method)
    sun.java2d.SunGraphicsEnvironment.<init>(SunGraphicsEnvironment.java:94)
    sun.awt.Win32GraphicsEnvironment.<init>(Win32GraphicsEnvironment.java:73)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    java.lang.reflect.Constructor.newInstance(Constructor.java:494)
    java.lang.Class.newInstance0(Class.java:350)
    java.lang.Class.newInstance(Class.java:303)
    java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68)
    java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1141)
    java.awt.image.BufferedImage.getGraphics(BufferedImage.java:1131)
    org.apache.jsp.pages.user.code_jsp._jspService(code_jsp.java:70)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    com.bestoe.smeoe.servlet.DoUrlFilter.doFilter(DoUrlFilter.java:109)
      

  2.   

    发表于:2007-12-10 16:35:584楼 得分:0 
    要看绝对路径,在图片上点右键,看图片的请求路径,直接放到地址栏,看有没有 
    一般是少了contextpath导致的 
     
     
    ~~~~~~~~~~~~
    楼主说的不完全正确亚,我单独运行那个页面会报空指针错误 因为session里面的值是空的。
      

  3.   

    写的那段程序有问题 ?
    给你粘贴一段产生图片的代码吧
    <%@ page contentType="image/jpeg;charset=gb2312" %>
    <%@ page import="java.awt.*"%>
    <%@ page import="java.awt.image.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="com.sun.image.codec.jpeg.*"%>
    <%!
    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);
            }
    %>
    <%
    System.setProperty("java.awt.headless", "true");
    //设置页面不缓存
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);// 在内存中创建图象
    int width=60, height=20;
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    // 获取图形上下文
    Graphics g = image.getGraphics();
    //生成随机类
    Random random = new Random();// 设定背景色
    g.setColor(getRandColor(200,250));
    g.fillRect(0, 0, width, height);//设定字体
    g.setFont(new Font("Times New Roman",Font.PLAIN,18));//???
    //g.setColor(new Color());
    //g.drawRect(0,0,width-1,height-1);
    // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
    g.setColor(getRandColor(160,200));
    for (int i=0;i<155;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);
    }// 取随机产生的认证码(4位数字)
    String sRand="";
    for (int i=0;i<4;i++) {
        String rand=String.valueOf(random.nextInt(10));
        sRand+=rand;
        // 将认证码显示到图象中
        g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为
        g.drawString(rand,13*i+6,16);
    }// 将认证码存入SESSION
    session.setAttribute("rand",sRand);
    // 图象生效
    g.dispose();// 输出图象到页面//ImageIO.write(image, "JPEG", response.getOutputStream());
    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream());
    encoder.encode(image);
    %> 
    使用方法
    保存文件名称为 image.jsp
    在程序中<img border=0 src="image.jsp">(引用image.jsp的文件和image.jsp 在同一目录下)