日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

响应对象Response

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 响应对象Response 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.概念【響應給瀏覽器】
  • 響應∶回饋結果。在B/S架構中,就是服務器給客戶端瀏覽器反饋結果。
  • 響應對象∶就是在項目中用于發送響應的對象。
  • 實現接口:ServletResponse和HttpServletResponse【瀏覽器訪問服務器后,服務器給客戶端響應的數據會封裝為ServletResponse對象,它有一個子類叫HttpServletResponse對象,用于封裝按照Http協議封裝的響應數據。】
2.響應狀態碼

3.字節/字符流響應數據

字節流響應數據【響應給瀏覽器】

@WebServlet("/ServletDemo1") public class ServletDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//設置瀏覽器響應編碼[html類型的文本,字符集為utf-8]resp.setContentType("text/html;charset=utf-8");//1.獲取字節流輸出對象ServletOutputStream os = resp.getOutputStream();//2.定義一個消息String str ="你好世界";//3.通過字節流對象輸出os.write(str.getBytes("utf-8"));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

字符流響應數據【響應給瀏覽器】

@WebServlet("/ServletDemo2") public class ServletDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//設置瀏覽器響應編碼[html類型的文本,字符集為utf-8]resp.setContentType("text/html;charset=utf-8");//獲取字符流輸出對象resp.getWriter().write("<h3>這是一個響應信息</h3>");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

注:【字節流響應數據無法換行,原因:字節流讀取1024個字節,直接讀到結尾,然后在末尾寫入,相當于換行符沒起到最用,可以采用字符流展示標簽數據】

4.響應圖片[圖片不需要設置編碼]

點擊超鏈接對應ServletDemo3處理

<a href="/Response/ServletDemo3">點我看圖</a> //響應圖片[圖片不需要設置編碼] @WebServlet("/ServletDemo3") public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.創建字節輸入流對象,關聯讀取圖片路徑//首先獲取到關聯圖片的項目路徑[因為項目發布后路徑會改變]String realPath = getServletContext().getRealPath("/img/nan.png");BufferedInputStream bis = new BufferedInputStream(new FileInputStream(realPath));//2.響應對象獲取字節輸出流對象,展示關聯圖片ServletOutputStream os = resp.getOutputStream();byte[] bytes = new byte[1024];int len = bis.read(bytes);while (len!=-1){os.write(bytes,0,len);len = bis.read(bytes);}bis.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }
5.設置緩存時間
  • 緩存:對于不經常變化的數據,我們可以設置合理緩存時間,以避免瀏覽器頻繁請求服務器。以此來提高效率
  • 方法:setDateHeader(String name,long time)
//設置緩存 @WebServlet("/ServletDemo4") public class ServletDemo4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//設置瀏覽器響應編碼[html類型的文本,字符集為utf-8]resp.setContentType("text/html;charset=utf-8");String news = "這是一條很火爆的新聞";//設置緩存[1小時緩存時間]resp.setDateHeader("Expires", System.currentTimeMillis() + 1 * 60 * 60 * 1000);//寫出數據resp.getWriter().write(news);System.out.println("只有第一次輸出,再次訪問不會訪問服務器");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }打印結果://瀏覽器不刷新就會讀取緩存 --------------------------------------------------------- 只有第一次輸出,再次訪問不會訪問服務器
6.設置定時刷新
//定時刷新 @WebServlet("/ServletDemo5") public class ServletDemo5 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//設置瀏覽器響應編碼[html類型的文本,字符集為utf-8]resp.setContentType("text/html;charset=utf-8");//寫出顯示數據resp.getWriter().write("您的用戶名有誤,3秒回自動跳轉到登錄頁面");//定時刷新,跳回resp.setHeader("Refresh","3;url=/Response/html/index.html");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }
7.重定向
//重定向a找b,b告訴a,c可以完成,a再找c a找了2次 @WebServlet("/ServletDemo6") public class ServletDemo6 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//設置瀏覽器響應編碼[html類型的文本,字符集為utf-8]resp.setContentType("text/html;charset=utf-8");//方法1:設置重定向狀態碼/*resp.setStatus(302);resp.setHeader("location",req.getContextPath()+"/ServletDemo5"); *///方法2:resp.sendRedirect(req.getContextPath()+"/ServletDemo5");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }
8.文件下載

點擊超鏈接對應ServletDemo7處理

<a href="/Response/ServletDemo7">點我下載圖片</a> //文件下載 @WebServlet("/ServletDemo7") public class ServletDemo7 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.創建字節輸入流對象,關聯讀取的文件String realPath = getServletContext().getRealPath("/img/nan.png");BufferedInputStream bis = new BufferedInputStream(new FileInputStream(realPath));//2.設置響應頭支持的類型/*Content-Type 消息頭名稱支持的類型application/octet-stream消息頭參數應用的類型為字節流*/resp.setHeader("Content-Type","application/octet-stream");//3.設置響應頭以下載方式打開附件/*Content-Disposition消息頭名稱 處理的形式attachment ;filename=hm.png消息頭參數附件形式進行處理―指定下載文件的名稱*/resp.setHeader("Content-Disposition","attachment;filename=nan.png");//4.獲取字節輸出流對象ServletOutputStream os = resp.getOutputStream();//5.循環讀寫byte[] bytes = new byte[1024];int len = bis.read(bytes);while (len!=-1){os.write(bytes,0,len);len = bis.read(bytes);}//6.釋放資源bis.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

總結

以上是生活随笔為你收集整理的响应对象Response的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。