e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> JSP教程 >> 用servlet显示图片 >> 教程正文
 
教程搜索
 
 
相关教程
  • JSP分页技术实现
  • 使用XML封装数据库操作语句的实现(完
  • 结合”XML封装数据库操作语句的实现”
  • 如何使用XML实现多渠道接入网站的构架
  • 深入浅出taglib
  • 在JSP中编写你的第一个Tag
  • 用Java实现Web服务器
  • 如何利用xml,javascript绕开apple
  • 缓存JSP显示的内容
  • 关于JAVA的分页查询操作技术
  • 漫步j2ee之jsp技术(1)
  • 漫步j2ee之jsp技术(2)
  • Portlet应用开发(Portlet Specs v1.0)
  • 如何用jsp输出存在于oracle数据库Blob
  • Servlet设计
  • 用servlet显示图片
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
用servlet显示图片
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

[pre] 最近,公司用servlet做一个跟踪图片点击技术的模块,我个人略有心得想和大家分享,

不知大家愿意审视。

这个模块挺大,我仅说说用servlet显示图片部分。我先说说用servlet显示图片的一个流程:

1. 设置response的输出类型:

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

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

"image/jpg;charset=GB2312"类型文件。

2. 得到文件流:

servlet是以流的形式件图片文件从服务器读出,通过response将流发到浏览器的。

3. 得到输出流:

对应的语句--OutputStream output = response.getOutputStream();

当然,处理图片文件需要以二进制形式的流。

4. 文件流的编码(但也不一定必须编码的,如果不是文件流,则必须编码)

所以我给大家一个用编码的代码和不用编码的代码.

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

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

package xjw.personal.servet;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import com.sun.image.codec.jpeg.*;//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";//设定输出的类型

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";//图片相对web应用的位置

}

OutputStream output = response.getOutputStream();//得到输出流

if(imagePath.toLowerCase().endsWith(".jpg"))//使用编码处理文件流的情况:

{

response.setContentType(JPG);//设定输出的类型

//得到图片的真实路径

imagePath = getServletContext().getRealPath(imagePath);

//得到图片的文件流

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();

}

}

最后是如何调用,你可以简单的映射一下servelt,我就将servet的名映射为

ShowPic, 于是下代码调用

<html>

<body>

<img src="http://www.chinaitpower.com/A200507/2005-07-24/ShowPic?spec=2></a> </body>

</html>

这样图片便显示在htm上了,本人研究java的时间不长,如有问题,尽情指正。[/pre]


  • 上一篇教程: Web开发学习笔记
  • 下一篇教程: Servlet设计
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.