转载自:http://developer.51cto.com/art/200907/134170.htm
在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.*;
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";
实现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";
图片相对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="ShowPic?spec=2"﹥﹤/a﹥
- ﹤/body﹥
- ﹤/html﹥
Servlet编程之用Servlet显示图片的介绍就是这样子了,通过上述操作图片便显示在htm上了,效果如何呢?
分享到:
相关推荐
JAVA SERVLET 高级编程(处理多媒体信息,Java Server Page 技术,servlet与applet 通讯,Servlet 间通讯)
全书由16章和2个附录构成,理论结合实际,分门别类讲述了Servlet编程方法、会话管理、服务器端图形生成、网络编程、上传和下载文件、使用数据库、在数据库中存取图象、Servlet链、Servlet服务器端包含、Applet和...
深入java servlet 网络编程 深入java servlet 网络编程 深入java servlet 网络编程 深入java servlet 网络编程 深入java servlet 网络编程
我认为写的比较好 希望对大家有帮助 是关于JAVA SERVLET 的指南 谢谢
Java Servlet Programming,英文,PDF文档,奥莱理图书
深入Java Servlet 网络编程
深入 Java Servlet 网络编程 深入 Java Servlet 网络编程
3. 2 使用Java Servlet API进行会话管理 3. 2. 1 HttpSession接口 3. 2. 2 管理会话数据 3. 2. 3 购物车实例 3. 2. 4 会话事件 第4章 生成图像 4. 1 HTTP协议中的MIME类型 4. 2 Servlet向客户端返回MIME类型...
◎ Servlet的基本介绍,以及Servlet的生命周期 ◎ Servlet的运行环境以及Servlet的体系结构 ◎ Servlet的配置与执行以及如何使用Web程序和Servlet进行交互 ◎ RequestDispatcher接口 ◎ 会话跟踪与应用程序事件
第三章 Servlet 编程第三章
深入 Java Servlet 网络编程PDF格式,
The second edition of this popular book has been completely updated to add the new features of the Java Servlet API Version 2.2, and new chapters on servlet security and advanced communication....
深入java servlet网络编程 pdg文件
Java Servlet编程指南
Servlet与JSP核心编程:综合介绍Servlet与JSP