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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaWeb 入门篇(4)HttpResponse 详解 HttpRequest 详解

發布時間:2025/3/19 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaWeb 入门篇(4)HttpResponse 详解 HttpRequest 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HttpResponse 講解

HttpServletResponse概述:

? 在創建Servlet時會覆蓋service()方法,或doGet()/doPost(),這些方法都有兩個參數,一個為代表請求的request和代表響應response。service方法中的response的類型是ServletResponse,而doGet/doPost方法的response的類型是HttpServletResponse,HttpServletResponse是ServletResponse的子接口,功能和方法更加強大。

Response運行流程

響應頭有很多這里只介紹常用的。

在瀏覽器可以按F12 抓包看響應頭、請求頭、具體的可以再查。

設置響應行

設置響應的狀態碼

/*** @Author: crush* @Date: 2021-05-09 19:35* version 1.0*/ @WebServlet("/test3") public class HttpResponseTest3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("設置狀態碼,前臺通過判斷狀態碼,來判斷請求是否成功");resp.setStatus(404);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

測試

設置響應頭

刷新 跳轉頁面

/*** @Author: crush* @Date: 2021-05-09 19:35* version 1.0*/ @WebServlet("/test4") public class HttpResponseTest4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 設置響應頭 每1秒自動刷新System.out.println("設置響應頭 每1秒自動刷新");resp.setHeader("Refresh", "1");//定時跳轉 3秒后將自動跳轉 // resp.setHeader("Refresh","3;URL=hello.jsp");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

測試

一個小demo 實現刷新 頁面累加

/*** response* @author Adimi*/ @WebServlet("/test4") public class ResponseTest4 extends HttpServlet {private static Integer id=1;@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setHeader("Refresh","1");PrintWriter writer = response.getWriter();id++;writer.print("id==>"+id);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

設置字符編碼 解決中文亂碼問題

/*** @Author: crush* @Date: 2021-05-09 19:35* version 1.0*/ @WebServlet("/test1") public class HttpResponseTest1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 解決中文亂碼問題// 設置響應頭// 設置字符編碼 resp.setCharacterEncoding("UTF-8");// 設置響應內容以什么格式展示到頁面 什么編碼格式 包含了設置字符編碼resp.setContentType("text/html;charset=utf-8");PrintWriter writer = resp.getWriter();writer.print("中國,你好!!!");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

測試

重定向 redirect

/*** 重定向* @Author: crush* @Date: 2021-05-09 19:35* version 1.0*/ @WebServlet("/test5") public class HttpResponseTest5 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.sendRedirect("hello.jsp"); // resp.setHeader("location","www.baidu.com"); 通過設置響應頭轉發}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

request轉發

/*** 重定向* @Author: crush* @Date: 2021-05-09 19:35* version 1.0*/ @WebServlet("/test5") public class HttpResponseTest5 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // resp.sendRedirect("hello.jsp");req.getRequestDispatcher("hello.jsp").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

重定向和轉發的區別

文件下載

  • 獲取路徑資源

    String path=this.getServletContext().getRealPath("WEB-INF\\classes\\8.jpg");
  • 讀取資源

    FileInputStream fileInputStream=new FileInputStream(path);
  • 獲取到文件名,路徑在電腦上保存的形式是 \ \

    String fileName=path.substring(path.lastIndexOf("\\")+1);
  • 設置消息頭告訴瀏覽器,我要下載1.png這個圖片 設置編碼

    resp.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
  • 把讀取到的內容回送給瀏覽器

    int len=0; byte[] bytes=new byte[1024]; // ServletOutputStream 提供用于將二進制數據發送到客戶端的輸出流 ServletOutputStream servletOutputStream=resp.getOutputStream(); while((len=fileInputStream.read(bytes))>0) {servletOutputStream.write(bytes,0,len); }
  • 關閉資源

  • servletOutputStream.close();fileInputStream.close();
  • 注:8.jpg 放在我的resources 文件夾下 但是這里需要寫的是編譯完8.jpg存放的位置

  • 具體代碼

    /*** @Author: crush* @Date: 2021-05-09 19:40* version 1.0*/ @WebServlet("/down") public class ResponseDownFile extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//獲取路徑資源String path=this.getServletContext().getRealPath("WEB-INF\\classes\\8.jpg");//讀取資源FileInputStream fileInputStream=new FileInputStream(path);//獲取到文件名,路徑在電腦上保存的形式是\\String fileName=path.substring(path.lastIndexOf("\\")+1);//設置消息頭告訴瀏覽器,我要下載1.png這個圖片// 該方式文件名為中文時會亂碼//防止中文亂碼resp.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));//把讀取到的內容回送給瀏覽器int len=0;byte[] bytes=new byte[1024];ServletOutputStream servletOutputStream=resp.getOutputStream();while((len=fileInputStream.read(bytes))>0) {servletOutputStream.write(bytes,0,len);}// 關閉資源servletOutputStream.close();fileInputStream.close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

    HttpRequest 講解

    HttpServletRequest概述

    ? 我們在創建Servlet時會覆蓋service()方法,或doGet()/doPost(),這些方法都有兩個參數,一個為代表請求的request和代表響應response。service()方法中寫了根據請求方式的不同調用doget()和dopost().

    service方法中的request的類型是ServletRequest,而doGet/doPost方法的request類型HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加強大.

    Request 運行流程

    獲取請求攜帶的參數

    /*** @Author: crush* @Date: 2021-05-11 16:52* version 1.0*/ @WebServlet("/request1") public class RequestTest1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 這里是請求的參數名 必須是同名的 String username = req.getParameter("username"); String password = req.getParameter("password");PrintWriter writer = resp.getWriter();writer.print("<h1>"+username+":"+password+"</h1>");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

    獲取多個參數的值

    @Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 設置請求的編碼 不然會亂碼req.setCharacterEncoding("utf-8");Enumeration<String> names = req.getParameterNames();while (names.hasMoreElements()) {String name = (String) names.nextElement();String[] values = req.getParameterValues(name);System.out.println(name+":"+ Arrays.toString(values));}}

    獲得請求行的信息

    /*** @Author: crush* @Date: 2021-05-11 16:52* version 1.0*/ @WebServlet("/request3") public class RequestTest3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 獲得請求的urlStringBuffer requestURL = req.getRequestURL();System.out.println("請求的URL===>"+requestURL);// 獲得請求的Servlet的路徑String path = req.getServletPath();System.out.println("請求的Servlet的路徑===>"+path);//返回發出此請求的HTTP方法的名稱,例如GET,POST或PUTString method = req.getMethod();System.out.println("返回發出此請求的HTTP方法的名稱==>"+method);//返回發送請求的客戶端或最后一個代理的Internet協議(IP)地址String remoteAddr = req.getRemoteAddr();System.out.println("remoteAddr==>"+remoteAddr);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

    request實現轉發

    /*** @Author: crush* @Date: 2021-05-11 16:52* version 1.0*/ @WebServlet("/request2") public class RequestTest2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 訪問request2 轉發到 request4去req.getRequestDispatcher("/request4").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

    request是一個域對象

    request對象也是一個存儲數據的區域對象,所以也具有如下方法:

    setAttribute(String name, Object o)

    getAttribute(String name)

    removeAttribute(String name)

    ServletContext 作用域:

    創建:啟動web應用程序的時候創建

    銷毀:關閉web應用程序的時候銷毀

    域的作用范圍:整個web應用的啟動周期

    request作用域:

    創建:訪問時創建request

    銷毀:響應結束request銷毀

    域的作用范圍:一次請求中

    自言自語

    努力生活、加油學習。

    總結

    以上是生活随笔為你收集整理的JavaWeb 入门篇(4)HttpResponse 详解 HttpRequest 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 国内自拍视频在线观看 | 最新精品国产 | 爱射综合| 日韩一区二区av | 91中文字日产乱幕4区 | av老司机在线观看 | 一区成人| 中文字幕在线观看网址 | 国产女人叫床高潮大片免费 | 韩国精品视频在线观看 | 国产精品天美传媒 | 成人ay| 麻豆视频传媒入口 | 91涩涩涩 | 日韩激情视频一区二区 | 懂色av一区二区三区蜜臀 | 午夜婷婷在线观看 | 人人九九精 | 欧美熟妇精品一区二区蜜桃视频 | 丝袜国产一区 | 99久国产| 国产亚洲精品久久久久婷婷瑜伽 | 一级片视频播放 | av在线在线| 欧美tv| 久久久久久天堂 | 国产99精品 | 俄罗斯丰满熟妇hd | 亚洲欧美色图视频 | 神马影院午夜伦理片 | 男女扒开双腿猛进入爽爽免费 | 中文字幕观看av | 黄色一级淫片 | 永久免费看片 | 日韩欧美中文字幕一区二区 | 成人夜色视频 | 日韩在线播放一区二区 | 久久久久久久久久久91 | 久久美女精品 | 四虎影院国产精品 | 善良的女朋友在线观看 | a免费在线观看 | 国产三级理论 | 亚洲欧美一区二区三区 | 国产精品久久久久久久久久久久 | 国产男男gay体育生白袜 | 美日韩丰满少妇在线观看 | 欧性猛交ⅹxxx乱大交 | 午夜av中文字幕 | 综合99| 男男啪啪无遮挡 | 91插插插插插 | 亚洲久热 | 日韩精品乱码久久久久久 | 日韩一级久久 | 午夜一区二区三区在线观看 | 麻豆网 | 亚洲a黄 | av噜噜在线 | 免费瑟瑟网站 | 欧美专区日韩专区 | 9i看片成人免费看片 | 国产精品福利在线观看 | 成年人黄色在线观看 | 免费毛片网站 | 免费一级特黄特色大片 | 中文字幕一区二区三区5566 | 青草视频在线免费观看 | 五月少妇 | 一区二区三区伦理 | 色精品| 天天操天天插天天射 | 久久99精品久久久久婷婷 | 精品久久国产视频 | 500福利视频导航 | 91视频福利| 久久久久人| 国产人与zoxxxx另类 | 亚洲黄色视屏 | 色综合图区 | 成人免费性生活视频 | 成人免费91 | 国产精品88| 91在线观看喷潮 | 国产毛茸茸 | 日本黄色精品 | 粉嫩aⅴ一区二区三区四区五区 | 玩偶姐姐在线观看免费 | 欧美亚洲日本一区 | 国产精品久久久久久亚洲调教 | 特黄视频免费看 | 久久久天天| 4438x亚洲 | 日韩丝袜一区 | 91视频高清 | 亚洲精品乱码久久久久久蜜桃图片 | 精品视频一二区 | 精品国产精品国产偷麻豆 | 欧美日韩二三区 |