新聞中心
在Servlet編程中用servlet做一個(gè)跟蹤圖片點(diǎn)擊技術(shù),這個(gè)模塊挺大,這里說(shuō)說(shuō)用Servlet顯示圖片部分。先說(shuō)說(shuō)用Servlet顯示圖片的一個(gè)流程:

1. Servlet編程中設(shè)置response的輸出類(lèi)型:
對(duì)應(yīng)的語(yǔ)句--response.setContentType("image/gif;charset=GB2312") ,
response 便能輸出gif圖片,"image/gif;charset=GB2312"便是輸出類(lèi)型,當(dāng)然你可以輸出 "image/jpg;charset=GB2312"類(lèi)型文件。
2. 實(shí)現(xiàn)Servlet顯示圖片之得到文件流:
servlet是以流的形式件圖片文件從服務(wù)器讀出,通過(guò)response將流發(fā)到瀏覽器的。
3. 實(shí)現(xiàn)Servlet顯示圖片之得到輸出流:
對(duì)應(yīng)的語(yǔ)句--OutputStream output = response.getOutputStream(); 當(dāng)然,處理圖片文件需要以二進(jìn)制形式的流。
4. 實(shí)現(xiàn)Servlet顯示圖片之文件流的編碼(但也不一定必須編碼的,如果不是文件流,則必須編碼) 所以我給大家一個(gè)用編碼的代碼和不用編碼的代碼.
順便說(shuō)一句,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";
實(shí)現(xiàn)Servlet顯示圖片之設(shè)定輸出的類(lèi)型
- 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");
- //輸出圖片的類(lèi)型的標(biāo)志
- int int_spec=Integer.parseInt(spec);
- if(spec==1) {
- String imagePath="/jfgg/b1.jpg";
- //圖片相對(duì)web應(yīng)用的位置 }
- else {
- String imagePath="/jfgg/b2.gif";
圖片相對(duì)web應(yīng)用的位置
- }
- OutputStream output = response.getOutputStream();//得到輸出流
- if(imagePath.toLowerCase().endsWith(".jpg"))//使用編碼處理文件流的情況:
- { response.setContentType(JPG);//設(shè)定輸出的類(lèi)型
- //得到圖片的真實(shí)路徑
- imagePath = getServletContext().getRealPath(imagePath);
得到圖片的文件流
- InputStream imageIn = new FileInputStream(new File(imagePath));
- //得到輸入的編碼器,將文件流進(jìn)行jpg格式編碼
- JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn); //得到編碼后的圖片對(duì)象
- BufferedImage image = decoder.decodeAsBufferedImage(); //得到輸出的編碼器
- JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
- encoder.encode(image);//對(duì)圖片進(jìn)行輸出編碼
- imageIn.close();//關(guān)閉文件流 }
- if(imagePath.toLowerCase().endsWith(".gif"))//不使用編碼處理文件流的情況:
- { response.setContentType(GIF); ServletContext context = getServletContext();//得到背景對(duì)象
- InputStream imageIn=context.getResourceAsStream(imagePath);//文件流
- BufferedInputStream bis=new BufferedInputStream(imageIn);//輸入緩沖流
- BufferedOutputStream bos=new BufferedOutputStream(output);//輸出緩沖流
- byte data[]=new byte[4096];//緩沖字節(jié)數(shù)
- 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(); }
- }
***是如何調(diào)用,你可以簡(jiǎn)單的映射一下servelt,我就將servet的名映射為ShowPic, 于是下代碼調(diào)用
- ﹤html﹥
- ﹤body﹥
- ﹤img src="ShowPic?spec=2"﹥﹤/a﹥
- ﹤/body﹥
- ﹤/html﹥
Servlet編程之用Servlet顯示圖片的介紹就是這樣子了,通過(guò)上述操作圖片便顯示在htm上了,效果如何呢?
【編輯推薦】
- 什么是Servlet以及常用Servlet API有哪些
- JSP Servlet實(shí)例之自動(dòng)跳轉(zhuǎn)到出錯(cuò)頁(yè)
- JSP Servlet開(kāi)發(fā)最初那點(diǎn)事
- Java Servlet API文檔實(shí)用說(shuō)明
- Java Servlets(JSP)開(kāi)發(fā)環(huán)境
網(wǎng)站題目:Servlet編程之用Servlet顯示圖片
鏈接分享:http://www.dlmjj.cn/article/cdscghc.html


咨詢(xún)
建站咨詢(xún)
