探索Android軟鍵盤(pán)的疑難雜癥 深入探討Android異步精髓Handler 詳解Android主流框架不可或缺的基石 站在源碼的肩膀上全解Scroller工作機(jī)制
Android多分辨率適配框架(1)— 核心基礎(chǔ) Android多分辨率適配框架(2)— 原理剖析 Android多分辨率適配框架(3)— 使用指南
自定義View系列教程00–推翻自己和過(guò)往,重學(xué)自定義View 自定義View系列教程01–常用工具介紹 自定義View系列教程02–onMeasure源碼詳盡分析 自定義View系列教程03–onLayout源碼詳盡分析 自定義View系列教程04–Draw源碼分析及其實(shí)踐 自定義View系列教程05–示例分析 自定義View系列教程06–詳解View的Touch事件處理 自定義View系列教程07–詳解ViewGroup分發(fā)Touch事件 自定義View系列教程08–滑動(dòng)沖突的產(chǎn)生及其處理
在此,我們使用HttpServletResponse返回一張照片給客戶端,請(qǐng)看如下示例:
/** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */package cn.com;import java.io.FileInputStream;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class TestResponsePhoto extends HttpServlet{ @Override PRotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path=getServletContext().getRealPath("/WEB-INF/ZXM.jpg"); FileInputStream fileInputStream = new FileInputStream(path); ServletOutputStream outputStream = response.getOutputStream(); int len=0; byte [] b=new byte[1024]; while((len=fileInputStream.read(b))!=-1){ outputStream.write(b, 0, len); } outputStream.close(); fileInputStream.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { }}代碼解析如下:
得到文件路徑,請(qǐng)參見(jiàn)代碼第20行得到文件輸入流,請(qǐng)參見(jiàn)代碼第21行從response中獲取到ServletOutputStream作為輸出流,請(qǐng)參見(jiàn)代碼第22行將圖片返回給客戶端,請(qǐng)參見(jiàn)代碼第23-29行運(yùn)行后,效果如下圖所示:

嗯哼,看到了吧:瀏覽器中顯示了從服務(wù)端獲取的我女朋友的照片
但是,如果想讓用戶下載這張照片該怎么辦呢?請(qǐng)看如下示例:
/** * 本文作者:谷哥的小弟 * 博客地址:http://blog.csdn.net/lfdfhl */package cn.com;import java.io.FileInputStream;import java.io.IOException;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class DownPhoto extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path=getServletContext().getRealPath("/WEB-INF/zxm.jpg"); System.out.println("-----------------> path="+path); String fileName=path.substring(path.lastIndexOf("http://")+1); fileName=URLEncoder.encode(fileName, "UTF-8"); response.setHeader("content-disposition", "attachment;filename="+fileName); response.setHeader("content-type", "image/jpeg"); FileInputStream fileInputStream = new FileInputStream(path); ServletOutputStream outputStream = response.getOutputStream(); int len=0; byte [] b=new byte[1024]; while((len=fileInputStream.read(b))!=-1){ outputStream.write(b, 0, len); } outputStream.close(); fileInputStream.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); }}代碼解析如下:
獲取到文件名稱(chēng),請(qǐng)參見(jiàn)代碼第23行設(shè)置Header指示客戶端下載文件,請(qǐng)參見(jiàn)代碼第24行利用Header設(shè)置響應(yīng)的內(nèi)容的類(lèi)型嗯哼,待用戶輸入地址后即可下載對(duì)應(yīng)的文件。
除此以外,我們可利用畫(huà)筆在內(nèi)存中創(chuàng)作一張圖片BufferedImage然后再返回給客戶端;有的網(wǎng)站登錄時(shí)的驗(yàn)證碼正是采用該方式實(shí)現(xiàn)的。
谷哥的小弟學(xué)后臺(tái)(09)——Servlet(1)
谷哥的小弟學(xué)后臺(tái)(10)——Servlet(2)
谷哥的小弟學(xué)后臺(tái)(11)——Servlet(3)
谷哥的小弟學(xué)后臺(tái)(12)——Servlet(4)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注