Servlet编程之用Servlet显示图片

开发 后端
Servlet编程中用Servlet显示图片是经常用到的一项技术,SUN公司为我们提供了实现的方法,那么具体在Servlet编程中如何用Servlet显示图片呢,本文将向你介绍。

在Servlet编程中用servlet做一个跟踪图片点击技术,这个模块挺大,这里说说用Servlet显示图片部分。先说说用Servlet显示图片的一个流程:

1. Servlet编程中设置response的输出类型:  

对应的语句--response.setContentType("image/gif;charset=GB2312") ,

response 便能输出gif图片,"image/gif;charset=GB2312"便是输出类型,当然你可以输出 "image/jpg;charset=GB2312"类型文件。

2. 实现Servlet显示图片之得到文件流:

servlet是以流的形式件图片文件从服务器读出,通过response将流发到浏览器的。
 
3. 实现Servlet显示图片之得到输出流:

对应的语句--OutputStream output = response.getOutputStream(); 当然,处理图片文件需要以二进制形式的流。

4. 实现Servlet显示图片之文件流的编码(但也不一定必须编码的,如果不是文件流,则必须编码) 所以我给大家一个用编码的代码和不用编码的代码.

顺便说一句,sun公司仅提供了jpg图片文件的编码api。

我想基本流程都讲完了,下面我把代码拿给大家看一下,大家自然一目了然了:

package xjw.personal.servet;  
import java.io.*;  
import javax.servlet.*;  
import javax.servlet.http.*;  
import com.sun.image.codec.jpeg.*; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Sun公司仅提供了jpg图片文件的编码api

import javax.imageio.stream.*;  
import java.awt.*;  
import java.awt.image.BufferedImage;  
public class ShowPicture  extends HttpServlet{      
 private static final String GIF="image/gif;charset=GB2312"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

实现Servlet显示图片之设定输出的类型    

private static final String JPG="image/jpeg;charset=GB2312";     
  public void init()   
 throws ServletException     {     }     
  public void doGet(HttpServletRequest request, HttpServletResponse response)                    
throws IOException, ServletException     
  {        doPost(request, response);     }     
 public void doPost(HttpServletRequest request, HttpServletResponse response)                  
 throws IOException, ServletException   
  {                  
String spec=request.getParameter("spec");  
//输出图片的类型的标志      
 int int_spec=Integer.parseInt(spec);       
   if(spec==1)            {        
      String imagePath="/jfgg/b1.jpg";  
//图片相对web应用的位置        }         
 else        {              
  String imagePath="/jfgg/b2.gif"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

图片相对web应用的位置      

  }               
      OutputStream output = response.getOutputStream();//得到输出流        
 
if(imagePath.toLowerCase().endsWith(".jpg"))//使用编码处理文件流的情况:     
 
   {     response.setContentType(JPG);//设定输出的类型          
  //得到图片的真实路径                
  imagePath = getServletContext().getRealPath(imagePath);   
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

得到图片的文件流    

InputStream imageIn = new FileInputStream(new File(imagePath));         
  //得到输入的编码器,将文件流进行jpg格式编码     
  JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);         //得到编码后的图片对象           
BufferedImage image = decoder.decodeAsBufferedImage();   //得到输出的编码器   
 
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);        
 
    encoder.encode(image);//对图片进行输出编码       
     imageIn.close();//关闭文件流       }      
 
   if(imagePath.toLowerCase().endsWith(".gif"))//不使用编码处理文件流的情况:    
 
    {    response.setContentType(GIF);    ServletContext context = getServletContext();//得到背景对象   
 
   InputStream imageIn=context.getResourceAsStream(imagePath);//文件流          
 
BufferedInputStream bis=new BufferedInputStream(imageIn);//输入缓冲流      
 
BufferedOutputStream bos=new BufferedOutputStream(output);//输出缓冲流     
 
byte data[]=new byte[4096];//缓冲字节数    
 
  int size=0;     size=bis.read(data);     
 while (size!=-1)    {        
 bos.write(data,0,size);            
  size=bis.read(data);    }     
 bis.close();    bos.flush();//清空输出缓冲流     
      bos.close();    }      
  output.close();    }  
}   
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

  

***是如何调用,你可以简单的映射一下servelt,我就将servet的名映射为ShowPic,  于是下代码调用    

﹤html﹥     
 ﹤body﹥     
 ﹤img src="ShowPic?spec=2"﹥﹤/a﹥      
﹤/body﹥      
﹤/html﹥   
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

     

Servlet编程之用Servlet显示图片的介绍就是这样子了,通过上述操作图片便显示在htm上了,效果如何呢? 

【编辑推荐】

  1. 什么是Servlet以及常用Servlet API有哪些
  2. JSP Servlet实例之自动跳转到出错页
  3. JSP Servlet开发最初那点事
  4. Java Servlet API文档实用说明
  5. Java Servlets(JSP)开发环境
责任编辑:仲衡 来源: 天空技术网
相关推荐

2022-03-31 15:17:04

JavaSocketServlet容器

2011-11-10 10:23:56

Jscex

2009-07-06 13:29:09

Servlet教程

2009-07-07 17:32:31

HTTP Servle

2021-07-15 12:44:25

Shell编程进程

2009-07-08 09:35:53

Java ServleServlet 3.0

2013-09-02 09:18:59

2009-07-03 10:31:57

什么是ServletServlet API

2009-07-06 18:24:56

Servlet实例

2009-07-09 11:27:59

Servlet容器

2009-07-09 15:05:45

Servlet实例

2009-07-09 09:46:24

激活Servlet

2009-08-10 09:19:28

Servlet JSP

2009-07-08 10:12:04

Servlet Con

2009-07-09 13:04:37

Servlet接口

2009-07-10 18:10:18

Jython编写SerJython

2009-07-09 13:45:06

Servlet基本结构

2009-03-02 09:45:45

2009-07-07 10:08:49

Future Resp

2009-07-07 10:16:42

Servlet引擎
点赞
收藏

51CTO技术栈公众号