我按照书上说的,把源代码放到TOMCAT下,但是运行时,报告为该页无法显示,并且TOMCAT服务器自动关闭了!!
代码如下 (JPEGServlet.java)-----文件名
package com.jspdev.ch7;import java.awt.image.*; 
import java.awt.*; import javax.servlet.*; 
import javax.servlet.http.*; import java.io.*; 
import java.util.*; 
import com.sun.image.codec.jpeg.*; public class JPEGServlet extends HttpServlet { 
/**
 *处理 HTTP Get request 
 */
public void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 

response.setContentType("image/jpeg");//注意这里的MIME类型
ServletOutputStream out = response.getOutputStream(); 
//构造一个缓冲的图像。
BufferedImage image = new BufferedImage(750,30, BufferedImage.TYPE_INT_RGB); 
    int per=0;
    try{
    
    per=Integer.parseInt((String)request.getParameter("size"));
    }
    catch(Exception e)
    {
     e.printStackTrace();
    }
    
Graphics graphics = image.getGraphics(); 
graphics.setColor(Color.green); 
graphics.fillRect(0, 0, 750, 30); //先画一个长条矩形
graphics.setColor(Color.yellow); //改变颜色
graphics.fillRect(0, 0, 750*per/100, 30); //利用参数画矩形
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out); 
encoder.encode(image); 
out.close(); 


/**
 *处理 HTTP Post request ,和doGet一样
 */
public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
doGet(request,response); 

} 调用的是jpeg_form.html
内容如下
 <html><body>
请输入显示的比例:<br>
<form method="get" action="/ch7/jpeg_servlet">
<table><tr><td>
<input name="size" type="text"></td></tr><tr><td>
<input type=submit value="submit">
</td></tr></table>
</form></body></html>我按照书上说的,在浏览器里输入http://127.0.0.1:8080/ch7/jpeg_form.html
然后输入数字后,就出错了 
我这2文件都在ch7文件夹里

解决方案 »

  1.   

    ImageIO.write(image, "jpg", out);
      

  2.   

    >JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out); 
    >encoder.encode(image); 
    >out.close(); 改成 javax.imageio.ImageIO.write(image, "jpg", out);
      

  3.   

    servlet需要编译成class文件,不能直接使用.java文件的
      

  4.   

    楼主自己说的:我按照书上说的,把源代码放到TOMCAT下而且楼主用
    ServletOutputStream out = response.getOutputStream(); 
    JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out); 
    encoder.encode(image); 
    这样应该也没有错,我就是这样做Servlet的。最后建议楼主把out.close(); 这一句去掉试试看。
      

  5.   

    BufferedImage image = new BufferedImage(width, height,
    BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics(); g.setColor(Color.WHITE);
    g.fillRect(0, 0, width, height); byte buffer[] = null;
    try {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ImageIO.write(image, "JPEG", out);
    buffer = out.toByteArray();
    } catch (Exception e) {
    }ServletOutputStream out = response.getOutputStream(); 
    output.setContentType("image/*"); // 设置返回的文件类型
    output.write(b); // 输出数据
    output.close();