public void doFilter(ServletRequest Request, ServletResponse Response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
if((Request instanceof HttpServletRequest) &&(Response instanceof HttpServletResponse))
{
BufferedImage src=null;
HttpServletRequest request=(HttpServletRequest)Request;
HttpServletResponse response=(HttpServletResponse)Response;
response.setContentType("text/html"); 
//获得水印图片的真实路径
String waterRealPath=request.getRealPath(Water_Image);
// 获得默认图片的真实路径
String defaultRealPath=request.getRealPath(Non_Image);
// 获得传输过来的原图的servlet路径
String imagePath=request.getServletPath();
// 获得原图真实路径
String realTargetPath=request.getRealPath(imagePath);
System.out.println("imagePath="+imagePath); 
realTargetPath=realTargetPath.replaceAll("\\\\", "/");
defaultRealPath=defaultRealPath.replace("\\", "/");
waterRealPath=waterRealPath.replace("\\", "/");
System.out.println("realpath="+realTargetPath);
System.out.println("defaultpath="+defaultRealPath);
System.out.println("waterpath="+waterRealPath);

//
//装载原图
 File targetFile=new File(realTargetPath);
//File targetFile=new File("C:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\ImageWaterMark\\images\\BookCovers\\4757");
System.out.println("file="+targetFile.exists()+"file is file="+targetFile.isFile());
//装载默认图片
 File defaultFile=new File(defaultRealPath);
 
if(targetFile.exists()&&targetFile.isFile())
{
//如果原图存在,则将原图装入内存
src=ImageIO.read(targetFile); 
}
else
{
//如果原图不存在,则将默认图片装入内存
src=ImageIO.read(defaultFile);  
}
/** 获得src图的宽度和高度* */
int srcWidth=src.getWidth();
int srcHeight=src.getHeight();
 // 根据原图的尺寸,预装载一个图片,默认RGB格式
 BufferedImage image=new BufferedImage(srcWidth,srcHeight,BufferedImage.TYPE_INT_RGB);
 Graphics2D g2d=image.createGraphics();
 // 将内存内的src图绘制到指定的矩形内
 g2d.drawImage(src, 0,0, srcWidth, srcHeight,null);
 // 在已绘制的图片中,加入透明通道 ,0f完全透明,0.5f半透明,1f不透明
 g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1f));
  if(targetFile.exists()&&targetFile.isFile())
 {   
 // 装载水印
 File waterFile=new File(waterRealPath);
 // 将水印图片加入内存中
 BufferedImage waterImage=ImageIO.read(waterFile);
 /** 获取水印图片的宽度和高度* */
 int waterWidth=waterImage.getWidth();
 int waterHeight=waterImage.getHeight();
 // 将水印图品绘制进预装载的图中
 g2d.drawImage(waterImage, srcWidth-waterWidth, srcHeight-waterHeight, waterWidth, waterHeight,null);
  }
 //水印图片结束
 g2d.dispose();  
 
 OutputStream os=response.getOutputStream();  
 JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(os);
 //绘制新图片

 encoder.encode(image); 
 //out.flush(); 

 chain.doFilter(request,response);
 
}
}
如果是服务器上原来存在的图片,则不会有任何异常!!
如果图片在服务器上不存在,使用服务器上的默认图片后,就会出现下面的异常,这个怎么解决??
严重: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:662)
at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:325)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.common.charsetFliter.ImageFilter.doFilter(ImageFilter.java:124)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.common.charsetFliter.CharsetFilter.doFilter(CharsetFilter.java:23)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Unknown Source)