<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一篇博客上手request和response

      概念

      request:獲取請(qǐng)求數(shù)據(jù)
      response:設(shè)置響應(yīng)數(shù)據(jù)

      Request

      request繼承體系

      ServletRequest——Java提供的請(qǐng)求對(duì)象根接口
      HttpServletRequest——Java提供的對(duì)http協(xié)議封裝的請(qǐng)求對(duì)象接口
      RequestFacade——tomcat實(shí)現(xiàn)定義類

      request獲取數(shù)據(jù)

      package com.itheijma.web;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.BufferedReader;
      import java.io.IOException;
      
      @WebServlet("/req1")
      public class RequestDemo1 extends HttpServlet {
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //String method() 獲取請(qǐng)求方式
              String method = req.getMethod();
              System.out.println(method);
              //String getContextPath() 獲取虛擬目錄(項(xiàng)目訪問(wèn)路徑)
              String contextPath = req.getContextPath();
              System.out.println(contextPath);
              //StringBuffer getRequestURL() 獲取URL(統(tǒng)一資源定位符)
              StringBuffer url = req.getRequestURL();
              System.out.println(url.toString());
              //String getRequestURI() 獲取URI(統(tǒng)一資源標(biāo)識(shí)符)
              String uri = req.getRequestURI();
              System.out.println(uri);
              //String getQueryString() 獲取請(qǐng)求參數(shù)(get方式)
              String queryString = req.getQueryString();
              System.out.println(queryString);
      
              //------------
              //獲取請(qǐng)求頭
              String agent = req.getHeader("user-agent");
              System.out.println(agent);
          }
      
          @Override
          protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //獲取post請(qǐng)求體:請(qǐng)求參數(shù)
      
              // 1. 獲取字符輸入流
              BufferedReader br = req.getReader();
              // 2. 讀取數(shù)據(jù)
              String line = br.readLine();
              System.out.println(line);
      
          }
      }
      

      request通用的方式獲取數(shù)據(jù)

      package com.itheijma.web;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      import java.util.Map;
      
      @WebServlet("/req2")
      public class RequestDemo2 extends HttpServlet{
          @Override
          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //get請(qǐng)求邏輯
      //        System.out.println("get...");
      
              // 1.獲取所有參數(shù)的map集合
              Map<String, String[]> map = req.getParameterMap();
              for (String key : map.keySet()) {
                  //username:zhangsan
                  System.out.print(key+":");
      
                  //獲取值
                  String[] values = map.get(key);
                  for (String value : values) {
                      System.out.print(value + " ");
                  }
      
                  System.out.println();
              }
      
              System.out.println("----------");
      
              // 2.根據(jù)key獲取參數(shù)值,數(shù)組
              String[] hobbies = req.getParameterValues("hobby");
              for (String hobby : hobbies) {
      
                  System.out.println(hobby);
              }
      
              // 3. 根據(jù)key獲取單個(gè)參數(shù)值
              String username = req.getParameter("username");
              String password = req.getParameter("password");
              System.out.println(username);
              System.out.println(password);
      
      
          }
      
          @Override
          protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //post請(qǐng)求邏輯
              this.doGet(req,resp);
      
      
      //        System.out.println("post...");
      //        // 1.獲取所有參數(shù)的map集合
      //        Map<String, String[]> map = req.getParameterMap();
      //        for (String key : map.keySet()) {
      //            //username:zhangsan
      //            System.out.print(key+":");
      //
      //            //獲取值
      //            String[] values = map.get(key);
      //            for (String value : values) {
      //                System.out.print(value + " ");
      //            }
      //
      //            System.out.println();
      //        }
      //
      //        System.out.println("----------");
      //
      //        // 2.根據(jù)key獲取參數(shù)值,數(shù)組
      //        String[] hobbies = req.getParameterValues("hobby");
      //        for (String hobby : hobbies) {
      //
      //            System.out.println(hobby);
      //        }
      //
      //        // 3. 根據(jù)key獲取單個(gè)參數(shù)值
      //        String username = req.getParameter("username");
      //        String password = req.getParameter("password");
      //        System.out.println(username);
      //        System.out.println(password);
      
      
          }
      }
      
      

      request請(qǐng)求參數(shù)中文亂碼解決方法

      package com.itheijma.web;
      
      
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      import java.nio.charset.StandardCharsets;
      
      
      /**
       * 中文亂碼問(wèn)題解決方案
       */
      @WebServlet("/req3")
      public class RequestDemo3 extends HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              this.doGet(request, response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              // 1. 解決亂碼 POST 獲取參數(shù)方式:getReader()讀取數(shù)據(jù)流
              request.setCharacterEncoding("utf-8"); //設(shè)置字符輸入流的編碼
      
      
              // 2. 獲取username
              String username = request.getParameter("username");
              System.out.println("解決亂碼前:"+username);
      
      
              // 3. 解決亂碼 GET 獲取參數(shù)方式:getQueryString
              // 亂碼原因:tomcat進(jìn)行url解碼,默認(rèn)的字符集ISO-8859-1
      //        // 3.1 先對(duì)亂碼數(shù)據(jù)進(jìn)行編碼:轉(zhuǎn)為字節(jié)數(shù)組
      //        byte[] bytes = username.getBytes(StandardCharsets.ISO_8859_1);
      //        // 3.2 字節(jié)數(shù)組解碼
      //        username = new String(bytes, StandardCharsets.UTF_8);
      
              username = new String(username.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);
      
              System.out.println("解決亂碼后"+username);
      
      
          }
      }
      
      

      request請(qǐng)求轉(zhuǎn)發(fā)

      請(qǐng)求轉(zhuǎn)發(fā)(forward):一種在服務(wù)器內(nèi)部的資源跳轉(zhuǎn)方式。
      請(qǐng)求轉(zhuǎn)發(fā)特點(diǎn):

      1. 瀏覽器地址欄路徑不發(fā)生變化
      2. 只能轉(zhuǎn)發(fā)到當(dāng)前服務(wù)器的內(nèi)部資源
      3. 一次請(qǐng)求,可以在轉(zhuǎn)發(fā)的資源間使用request共享數(shù)據(jù)
        req4
      package com.itheijma.web;
      
      
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      import java.nio.charset.StandardCharsets;
      
      
      /**
       * 請(qǐng)求轉(zhuǎn)發(fā)
       */
      @WebServlet("/req4")
      public class RequestDemo4 extends HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              this.doGet(request, response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              System.out.println("demo4");
      
              //存儲(chǔ)數(shù)據(jù)
              request.setAttribute("msg","hello");
      
              //請(qǐng)求轉(zhuǎn)發(fā)
              request.getRequestDispatcher("/req5").forward(request,response);
          }
      }
      
      

      req5

      package com.itheijma.web;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      
      @WebServlet("/req5")
      public class RequestDemo5 extends HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              this.doGet(request, response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              System.out.println("demo5");
      
              //獲取數(shù)據(jù)
              Object msg = request.getAttribute("msg");
              System.out.println(msg);
          }
      }
      
      

      response

      Response完成重定向

      重定向:一種資源跳轉(zhuǎn)的方式
      resp1

      package com.itheima.web.response;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      
      @WebServlet("/resp1")
      public class ResponseDemo1 extends HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              this.doGet(request, response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              System.out.println("resp1...");
      
      //        // 重定向
      //        // 1. 設(shè)置狀態(tài)碼 302
      //        response.setStatus(302);
      //        // 2. 設(shè)置響應(yīng)頭 Location
      //        response.setHeader("Location","/tomcat-demo2/resp2");
      
              // 簡(jiǎn)化方式完成重定向
              response.sendRedirect("/tomcat-demo2/resp2");
      
          }
      }
      
      

      resp2

      package com.itheima.web.response;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      
      @WebServlet("/resp2")
      public class ResponseDemo2 extends HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              this.doGet(request, response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              System.out.println("resp2...");
          }
      }
      
      

      重定向特點(diǎn):

      1. 瀏覽器地址欄路徑發(fā)生變化
      2. 可以重定向到任意位置的資源(服務(wù)器內(nèi)、外部均可)
      3. 兩次請(qǐng)求,不能在多個(gè)資源使用request共享數(shù)據(jù)

      資源路徑問(wèn)題(什么時(shí)候加虛擬目錄)
      瀏覽器使用:需要加虛擬目錄
      服務(wù)端使用:不需要加虛擬目錄

      動(dòng)態(tài)獲取虛擬目錄

              //動(dòng)態(tài)獲取虛擬目錄
              String contextPath = request.getContextPath();
              response.sendRedirect(contextPath + "/resp2");
      

      Response響應(yīng)字符數(shù)據(jù)

      package com.itheima.web.response;
      
      import javax.servlet.ServletException;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.IOException;
      import java.io.PrintWriter;
      
      
      /**
       * 響應(yīng)字符數(shù)據(jù):設(shè)置字符數(shù)據(jù)的響應(yīng)體
       */
      @WebServlet("/resp3")
      public class ResponseDemo3 extends HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              this.doGet(request, response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              response.setContentType("text/html;charset=utf-8");
              //獲取字符輸出流
              PrintWriter writer = response.getWriter();
              //content-type
              //response.setHeader("content-type","text/html");
              writer.write("你好");
              writer.write("<h1>aaa</h1>");
      
              //細(xì)節(jié):流不需要關(guān)閉
          }
      }
      
      

      Response響應(yīng)字節(jié)數(shù)據(jù)

      package com.itheima.web.response;
      
      import org.apache.commons.io.IOUtils;
      
      import javax.servlet.ServletException;
      import javax.servlet.ServletOutputStream;
      import javax.servlet.annotation.WebServlet;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      import java.io.FileInputStream;
      import java.io.IOException;
      import java.io.PrintWriter;
      
      
      /**
       * 響應(yīng)字節(jié)數(shù)據(jù):設(shè)置字節(jié)數(shù)據(jù)的響應(yīng)體
       */
      @WebServlet("/resp4")
      public class ResponseDemo4 extends HttpServlet {
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              this.doGet(request, response);
          }
      
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      
              // 1. 讀取文件
              FileInputStream fis = new FileInputStream("e://a.jpg");
      
              // 2. 獲取response字節(jié)輸出流
              ServletOutputStream os = response.getOutputStream();
      
              // 3. 完成流的copy
      
      //        byte[] buff = new byte[1024];
      //        int len = 0;
      //        while ((len = fis.read(buff)) != -1){
      //            os.write(buff,0,len);
      //        }
              IOUtils.copy(fis,os);//使用工具類
      
              fis.close();
          }
      }
      
      

      pom文件導(dǎo)入工具類

      <dependency>
                  <groupId>commons-io</groupId>
                  <artifactId>commons-io</artifactId>
                  <version>2.6</version>
              </dependency>
      
      posted @ 2023-04-19 15:48  鶴城  閱讀(311)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 免费午夜无码片在线观看影院| 男人扒女人添高潮视频| 动漫AV纯肉无码AV电影网| 国产精品 无码专区| 伊人久久大香线蕉成人| 蜜桃视频无码区在线观看| 亚洲精品成人老司机影视| 国产一区二区三区黄色片| 久久国产免费直播| 特级做a爰片毛片免费看无码| av无码一区二区大桥久未| 国产精品成人aaaaa网站| 中文字幕国产日韩精品| 亚洲高清国产拍精品熟女| xxxx丰满少妇高潮| 国产成人av乱码在线观看| 日本中文一二区有码在线| 亚洲av无码之国产精品网址蜜芽| 中文日产乱幕九区无线码| 国产一区二区三区18禁| 国产情侣激情在线对白| 四虎av永久在线精品免费观看| 蜜桃臀av一区二区三区| 国产精品成人午夜久久| 漂亮的保姆hd完整版免费韩国| 免费无码va一区二区三区 | 不卡一区二区三区视频播放| 99久热在线精品视频| 国产婷婷综合在线视频中文| 国产精品永久免费无遮挡| 精品久久久久久无码国产| a男人的天堂久久a毛片| 国产天美传媒性色av高清| 毛片一区二区在线看| 亚洲熟妇在线视频观看| 国产一区二区三区四区激情 | 人妻系列无码专区69影院 | 亚洲熟伦熟女新五十熟妇| 亚洲最新无码中文字幕久久| 国产午夜精品福利免费看| 亚洲免费成人av一区|