溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JavaWeb中的Request和Response怎么使用

發(fā)布時間:2023-02-24 15:21:33 來源:億速云 閱讀:157 作者:iii 欄目:開發(fā)技術(shù)

這篇“JavaWeb中的Request和Response怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“JavaWeb中的Request和Response怎么使用”文章吧。


1,Request和Response的概述

==Request是請求對象,Response是響應(yīng)對象。==這兩個對象在我們使用Servlet的時候有看到:

JavaWeb中的Request和Response怎么使用

此時,我們就需要思考一個問題request和response這兩個參數(shù)的作用是什么?

JavaWeb中的Request和Response怎么使用

  • request:獲取請求數(shù)據(jù)

    • 瀏覽器會發(fā)送HTTP請求到后臺服務(wù)器[Tomcat]

    • HTTP的請求中會包含很多請求數(shù)據(jù)[請求行+請求頭+請求體]

    • 后臺服務(wù)器[Tomcat]會對HTTP請求中的數(shù)據(jù)進行解析并把解析結(jié)果存入到一個對象中

    • 所存入的對象即為request對象,所以我們可以從request對象中獲取請求的相關(guān)參數(shù)

    • 獲取到數(shù)據(jù)后就可以繼續(xù)后續(xù)的業(yè)務(wù),比如獲取用戶名和密碼就可以實現(xiàn)登錄操作的相關(guān)業(yè)務(wù)

  • response:設(shè)置響應(yīng)數(shù)據(jù)

    • 業(yè)務(wù)處理完后,后臺就需要給前端返回業(yè)務(wù)處理的結(jié)果即響應(yīng)數(shù)據(jù)

    • 把響應(yīng)數(shù)據(jù)封裝到response對象中

    • 后臺服務(wù)器[Tomcat]會解析response對象,按照[響應(yīng)行+響應(yīng)頭+響應(yīng)體]格式拼接結(jié)果

    • 瀏覽器最終解析結(jié)果,把內(nèi)容展示在瀏覽器給用戶瀏覽

我們可以通過一個案例來初步體驗下request和response對象的使用。

@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //使用request對象 獲取請求數(shù)據(jù)
        String name = request.getParameter("name");//url?name=zhangsan

        //使用response對象 設(shè)置響應(yīng)數(shù)據(jù)
        response.setHeader("content-type","text/html;charset=utf-8");
        response.getWriter().write("<h2>"+name+",歡迎您!</h2>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Post...");
    }
}

啟動成功后就可以通過瀏覽器來訪問,并且根據(jù)傳入?yún)?shù)的不同就可以在頁面上展示不同的內(nèi)容:

JavaWeb中的Request和Response怎么使用

  • request對象是用來封裝請求數(shù)據(jù)的對象

  • response對象是用來封裝響應(yīng)數(shù)據(jù)的對象

目前我們只知道這兩個對象是用來干什么的,那么它們具體是如何實現(xiàn)的,就需要我們繼續(xù)深入的學(xué)習(xí)。

2,Request對象

2.1 Request繼承體系

我們先思考一個問題

  • 當(dāng)我們的Servlet類實現(xiàn)的是Servlet接口的時候,service方法中的參數(shù)是ServletRequest和ServletResponse

  • 當(dāng)我們的Servlet類繼承的是HttpServlet類的時候,doGet和doPost方法中的參數(shù)就變成HttpServletRequest和HttpServletReponse

那么,

  • ServletRequest和HttpServletRequest的關(guān)系是什么?

  • request對象是有誰來創(chuàng)建的?

  • request提供了哪些API,這些API從哪里查?

首先,我們先來看下Request的繼承體系:

JavaWeb中的Request和Response怎么使用

從上圖中可以看出,ServletRequest和HttpServletRequest都是Java提供的,所以我們可以打開JavaEE提供的API文檔,打開后可以看到:

JavaWeb中的Request和Response怎么使用

所以ServletRequest和HttpServletRequest是繼承關(guān)系,并且兩個都是接口,接口是無法創(chuàng)建對象,這個時候就引發(fā)了下面這個問題:

JavaWeb中的Request和Response怎么使用

這個時候,我們就需要用到Request繼承體系中的RequestFacade:

  • 該類實現(xiàn)了HttpServletRequest接口,也間接實現(xiàn)了ServletRequest接口。

  • Servlet類中的service方法、doGet方法或者是doPost方法最終都是由Web服務(wù)器[Tomcat]來調(diào)用的,所以Tomcat提供了方法參數(shù)接口的具體實現(xiàn)類,并完成了對象的創(chuàng)建

  • 要想了解RequestFacade中都提供了哪些方法,我們可以直接查看JavaEE的API文檔中關(guān)于ServletRequest和HttpServletRequest的接口文檔,因為RequestFacade實現(xiàn)了其接口就需要重寫接口中的方法

對于上述結(jié)論,要想驗證,可以編寫一個Servlet,在方法中把request對象打印下,就能看到最終的對象是不是RequestFacade,代碼如下:

@WebServlet("/demo2")
public class ServletDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println(request);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
}

啟動服務(wù)器,運行訪問http://localhost:8080/request-demo/demo2,得到運行結(jié)果:

JavaWeb中的Request和Response怎么使用

總結(jié)

  • Request的繼承體系為ServletRequest&ndash;>HttpServletRequest&ndash;>RequestFacade

  • Tomcat需要解析請求數(shù)據(jù),封裝為request對象,并且創(chuàng)建request對象傳遞到service方法

  • 使用request對象,可以查閱JavaEE API文檔的HttpServletRequest接口中方法說明

2.2 Request獲取請求數(shù)據(jù)

HTTP請求數(shù)據(jù)總共分為三部分內(nèi)容,分別是請求行、請求頭、請求體,對于這三部分內(nèi)容的數(shù)據(jù),分別該如何獲取,首先我們先來學(xué)習(xí)請求行數(shù)據(jù)如何獲取

2.2.1 獲取請求行數(shù)據(jù)

請求行包含三塊內(nèi)容,分別是請求方式、請求資源路徑、HTTP協(xié)議及版本

JavaWeb中的Request和Response怎么使用

對于這三部分內(nèi)容,request對象都提供了對應(yīng)的API方法來獲取,具體如下:

獲取請求方式: GET

String getMethod()

獲取虛擬目錄(項目訪問路徑): /request-demo

String getContextPath()

獲取URL(統(tǒng)一資源定位符): http://localhost:8080/request-demo/req1

StringBuffer getRequestURL()

獲取URI(統(tǒng)一資源標(biāo)識符): /request-demo/req1

String getRequestURI()

獲取請求參數(shù)(GET方式): username=zhangsan&password=123

String getQueryString()

介紹完上述方法后,咱們通過代碼把上述方法都使用下:

/**
 * request 獲取請求數(shù)據(jù)
 */
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // String getMethod():獲取請求方式: GET
        String method = req.getMethod();
        System.out.println(method);//GET
        // String getContextPath():獲取虛擬目錄(項目訪問路徑):/request-demo
        String contextPath = req.getContextPath();
        System.out.println(contextPath);
        // StringBuffer getRequestURL(): 獲取URL(統(tǒng)一資源定位符):http://localhost:8080/request-demo/req1
        StringBuffer url = req.getRequestURL();
        System.out.println(url.toString());
        // String getRequestURI():獲取URI(統(tǒng)一資源標(biāo)識符): /request-demo/req1
        String uri = req.getRequestURI();
        System.out.println(uri);
        // String getQueryString():獲取請求參數(shù)(GET方式): username=zhangsan
        String queryString = req.getQueryString();
        System.out.println(queryString);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }
}

啟動服務(wù)器,訪問http://localhost:8080/request-demo/req1?username=zhangsan&passwrod=123,獲取的結(jié)果如下:

JavaWeb中的Request和Response怎么使用

2.2.2 獲取請求頭數(shù)據(jù)

對于請求頭的數(shù)據(jù),格式為key: value如下:

JavaWeb中的Request和Response怎么使用

所以根據(jù)請求頭名稱獲取對應(yīng)值的方法為:

String getHeader(String name)

接下來,在代碼中如果想要獲取客戶端瀏覽器的版本信息,則可以使用

/**
 * request 獲取請求數(shù)據(jù)
 */
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //獲取請求頭: user-agent: 瀏覽器的版本信息
        String agent = req.getHeader("user-agent");
		System.out.println(agent);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }
}

重新啟動服務(wù)器后,http://localhost:8080/request-demo/req1?username=zhangsan&passwrod=123,獲取的結(jié)果如下:

JavaWeb中的Request和Response怎么使用

2.2.3 獲取請求體數(shù)據(jù)

瀏覽器在發(fā)送GET請求的時候是沒有請求體的,所以需要把請求方式變更為POST,請求體中的數(shù)據(jù)格式如下:

JavaWeb中的Request和Response怎么使用

對于請求體中的數(shù)據(jù),Request對象提供了如下兩種方式來獲取其中的數(shù)據(jù),分別是:

獲取字節(jié)輸入流,如果前端發(fā)送的是字節(jié)數(shù)據(jù),比如傳遞的是文件數(shù)據(jù),則使用該方法

ServletInputStream getInputStream()
該方法可以獲取字節(jié)

獲取字符輸入流,如果前端發(fā)送的是純文本數(shù)據(jù),則使用該方法

BufferedReader getReader()
/**
 * request 獲取請求數(shù)據(jù)
 */
@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         //獲取post 請求體:請求參數(shù)
        //1. 獲取字符輸入流
        BufferedReader br = req.getReader();
        //2. 讀取數(shù)據(jù)
        String line = br.readLine();
        System.out.println(line);
    }
}

注意

BufferedReader流是通過request對象來獲取的,當(dāng)請求完成后request對象就會被銷毀,request對象被銷毀后,BufferedReader流就會自動關(guān)閉,所以此處就不需要手動關(guān)閉流了。

總結(jié)

HTTP請求數(shù)據(jù)中包含了請求行、請求頭和請求體,針對這三部分內(nèi)容,Request對象都提供了對應(yīng)的API方法來獲取對應(yīng)的值:

  • 請求行

    • getMethod()獲取請求方式

    • getContextPath()獲取項目訪問路徑

    • getRequestURL()獲取請求URL

    • getRequestURI()獲取請求URI

    • getQueryString()獲取GET請求方式的請求參數(shù)

  • 請求頭

    • getHeader(String name)根據(jù)請求頭名稱獲取其對應(yīng)的值

  • 請求體

    • 注意: 瀏覽器發(fā)送的POST請求才有請求體

    • 如果是純文本數(shù)據(jù):getReader()

    • 如果是字節(jié)數(shù)據(jù)如文件數(shù)據(jù):getInputStream()

2.2.4 獲取請求參數(shù)的通用方式

GET方式:

String getQueryString()

POST方式:

BufferedReader getReader();

(1)發(fā)送一個GET請求并攜帶用戶名,后臺接收后打印到控制臺

(2)發(fā)送一個POST請求并攜帶用戶名,后臺接收后打印到控制臺

此處大家需要注意的是GET請求和POST請求接收參數(shù)的方式不一樣,具體實現(xiàn)的代碼如下:

@WebServlet("/req1")
public class RequestDemo1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String result = req.getQueryString();
        System.out.println(result);

    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        BufferedReader br = req.getReader();
        String result = br.readLine();
        System.out.println(result);
    }
}

request對象已經(jīng)將上述獲取請求參數(shù)的方法進行了封裝,在request的方法中都實現(xiàn)了哪些操作?

(1)根據(jù)不同的請求方式獲取請求參數(shù),獲取的內(nèi)容如下:

JavaWeb中的Request和Response怎么使用

(2)把獲取到的內(nèi)容進行分割,內(nèi)容如下:

JavaWeb中的Request和Response怎么使用

(3)把分割后端數(shù)據(jù),存入到一個Map集合中:

JavaWeb中的Request和Response怎么使用

注意:因為參數(shù)的值可能是一個,也可能有多個,所以Map的值的類型為String數(shù)組。

基于上述理論,request對象為我們提供了如下方法:

獲取所有參數(shù)Map集合

Map<String,String[]> getParameterMap()

根據(jù)名稱獲取參數(shù)值(數(shù)組)

String[] getParameterValues(String name)

根據(jù)名稱獲取參數(shù)值(單個值)

String getParameter(String name)

2.4 請求參數(shù)中文亂碼問題

2.4.1 POST請求解決方案
  • 分析出現(xiàn)中文亂碼的原因:

    • POST的請求參數(shù)是通過request的getReader()來獲取流中的數(shù)據(jù)

    • TOMCAT在獲取流的時候采用的編碼是ISO-8859-1

    • ISO-8859-1編碼是不支持中文的,所以會出現(xiàn)亂碼

  • 解決方案:

    • 頁面設(shè)置的編碼格式為UTF-8

    • 把TOMCAT在獲取流數(shù)據(jù)之前的編碼設(shè)置為UTF-8

    • 通過request.setCharacterEncoding(“UTF-8”)設(shè)置編碼,UTF-8也可以寫成小寫

修改后的代碼為:

/**
 * 中文亂碼問題解決方案
 */
@WebServlet("/req4")
public class RequestDemo4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 解決亂碼: POST getReader()
        //設(shè)置字符輸入流的編碼,設(shè)置的字符集要和頁面保持一致
        request.setCharacterEncoding("UTF-8");
       //2. 獲取username
       String username = request.getParameter("username");
       System.out.println(username);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}
2.4.2 GET請求解決方案
  1. GET請求獲取請求參數(shù)的方式是request.getQueryString()

  2. POST請求獲取請求參數(shù)的方式是request.getReader()

  3. request.setCharacterEncoding(“utf-8”)是設(shè)置request處理流的編碼

  4. getQueryString方法并沒有通過流的方式獲取數(shù)據(jù)

所以GET請求不能用設(shè)置編碼的方式來解決中文亂碼問題,那問題又來了,如何解決GET請求的中文亂碼呢?

首先我們需要先分析下GET請求出現(xiàn)亂碼的原因:

JavaWeb中的Request和Response怎么使用

(1)瀏覽器通過HTTP協(xié)議發(fā)送請求和數(shù)據(jù)給后臺服務(wù)器(Tomcat)

(2)瀏覽器在發(fā)送HTTP的過程中會對中文數(shù)據(jù)進行URL編碼

(3)在進行URL編碼的時候會采用頁面<meta>標(biāo)簽指定的UTF-8的方式進行編碼,張三編碼后的結(jié)果為%E5%BC%A0%E4%B8%89

(4)后臺服務(wù)器(Tomcat)接收到%E5%BC%A0%E4%B8%89后會默認(rèn)按照ISO-8859-1進行URL解碼

(5)由于前后編碼與解碼采用的格式不一樣,就會導(dǎo)致后臺獲取到的數(shù)據(jù)為亂碼。

什么是URL編碼,什么又是URL解碼呢?

編碼:

java.net.URLEncoder.encode("需要被編碼的內(nèi)容","字符集(UTF-8)")

解碼:

java.net.URLDecoder.decode("需要被解碼的內(nèi)容","字符集(UTF-8)")

接下來咱們對張三來進行編碼和解碼

public class URLDemo {

  public static void main(String[] args) throws UnsupportedEncodingException {
        String username = "張三";
        //1. URL編碼
        String encode = URLEncoder.encode(username, "utf-8");
        System.out.println(encode); //打印:%E5%BC%A0%E4%B8%89

       //2. URL解碼
       //String decode = URLDecoder.decode(encode, "utf-8");//打印:張三
       String decode = URLDecoder.decode(encode, "ISO-8859-1");//打印:`?? ?? `
       System.out.println(decode);
    }
}

到這,我們就可以分析出GET請求中文參數(shù)出現(xiàn)亂碼的原因了,

  • 瀏覽器把中文參數(shù)按照UTF-8進行URL編碼

  • Tomcat對獲取到的內(nèi)容進行了ISO-8859-1的URL解碼

  • 在控制臺就會出現(xiàn)類上&aring;&frac14; &auml;&cedil;&permil;的亂碼,最后一位是個空格

具體的實現(xiàn)步驟為:

1.按照ISO-8859-1編碼獲取亂碼&aring;&frac14; &auml;&cedil;&permil;對應(yīng)的字節(jié)數(shù)組

2.按照UTF-8編碼獲取字節(jié)數(shù)組對應(yīng)的字符串

實現(xiàn)代碼如下:

public class URLDemo {

  public static void main(String[] args) throws UnsupportedEncodingException {
        String username = "張三";
        //1. URL編碼
        String encode = URLEncoder.encode(username, "utf-8");
        System.out.println(encode);
        //2. URL解碼
        String decode = URLDecoder.decode(encode, "ISO-8859-1");

        System.out.println(decode); //此處打印的是對應(yīng)的亂碼數(shù)據(jù)

        //3. 轉(zhuǎn)換為字節(jié)數(shù)據(jù),編碼
        byte[] bytes = decode.getBytes("ISO-8859-1");
        for (byte b : bytes) {
            System.out.print(b + " ");
        }
		//此處打印的是:-27 -68 -96 -28 -72 -119
        //4. 將字節(jié)數(shù)組轉(zhuǎn)為字符串,解碼
        String s = new String(bytes, "utf-8");
        System.out.println(s); //此處打印的是張三
    }
}

另外需要說明一點的是Tomcat8.0之后,已將GET請求亂碼問題解決,設(shè)置默認(rèn)的解碼方式為UTF-8

總結(jié)

中文亂碼解決方案

POST請求和GET請求的參數(shù)中如果有中文,后臺接收數(shù)據(jù)就會出現(xiàn)中文亂碼問題

GET請求在Tomcat8.0以后的版本就不會出現(xiàn)了

POST請求解決方案是:設(shè)置輸入流的編碼

request.setCharacterEncoding("UTF-8");注意:設(shè)置的字符集要和頁面保持一致

URL編碼實現(xiàn)方式:

編碼:

URLEncoder.encode(str,"UTF-8");

解碼:

URLDecoder.decode(s,"ISO-8859-1");

2.5 Request請求轉(zhuǎn)發(fā)

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

JavaWeb中的Request和Response怎么使用

(1)瀏覽器發(fā)送請求給服務(wù)器,服務(wù)器中對應(yīng)的資源A接收到請求

(2)資源A處理完請求后將請求發(fā)給資源B

(3)資源B處理完后將結(jié)果響應(yīng)給瀏覽器

(4)請求從資源A到資源B的過程就叫請求轉(zhuǎn)發(fā)

請求轉(zhuǎn)發(fā)的實現(xiàn)方式:

req.getRequestDispatcher("資源B路徑").forward(req,resp);

3,Response對象

前面講解完Request對象,接下來我們回到剛開始的那張圖:

JavaWeb中的Request和Response怎么使用

  • Request:使用request對象來獲取請求數(shù)據(jù)

  • Response:使用response對象來設(shè)置響應(yīng)數(shù)據(jù)

Reponse的繼承體系和Request的繼承體系也非常相似:

JavaWeb中的Request和Response怎么使用

3.1 Response設(shè)置響應(yīng)數(shù)據(jù)功能介紹

HTTP響應(yīng)數(shù)據(jù)總共分為三部分內(nèi)容,分別是響應(yīng)行、響應(yīng)頭、響應(yīng)體,對于這三部分內(nèi)容的數(shù)據(jù),respone對象都提供了哪些方法來進行設(shè)置?

響應(yīng)行

JavaWeb中的Request和Response怎么使用

對于響應(yīng)頭,比較常用的就是設(shè)置響應(yīng)狀態(tài)碼:

void setStatus(int sc);

響應(yīng)頭

JavaWeb中的Request和Response怎么使用

設(shè)置響應(yīng)頭鍵值對:

void setHeader(String name,String value);

響應(yīng)體

JavaWeb中的Request和Response怎么使用

對于響應(yīng)體,是通過字符、字節(jié)輸出流的方式往瀏覽器寫,

獲取字符輸出流:

PrintWriter getWriter();

獲取字節(jié)輸出流

ServletOutputStream getOutputStream();

介紹完這些方法后,后面我們會通過案例把這些方法都用一用,首先先來完成下重定向的功能開發(fā)。

3.2 Respones請求重定向 Response重定向(redirect):一種資源跳轉(zhuǎn)方式。

JavaWeb中的Request和Response怎么使用

(1)瀏覽器發(fā)送請求給服務(wù)器,服務(wù)器中對應(yīng)的資源A接收到請求

(2)資源A現(xiàn)在無法處理該請求,就會給瀏覽器響應(yīng)一個302的狀態(tài)碼+location的一個訪問資源B的路徑

(3)瀏覽器接收到響應(yīng)狀態(tài)碼為302就會重新發(fā)送請求到location對應(yīng)的訪問地址去訪問資源B

(4)資源B接收到請求后進行處理并最終給瀏覽器響應(yīng)結(jié)果,這整個過程就叫重定向

重定向的實現(xiàn)方式:

resp.setStatus(302);
resp.setHeader("location","資源B的訪問路徑");

重定向的特點

瀏覽器地址欄路徑發(fā)送變化

當(dāng)進行重定向訪問的時候,由于是由瀏覽器發(fā)送的兩次請求,所以地址會發(fā)生變化

JavaWeb中的Request和Response怎么使用

可以重定向到任何位置的資源(服務(wù)內(nèi)容、外部均可)

因為第一次響應(yīng)結(jié)果中包含了瀏覽器下次要跳轉(zhuǎn)的路徑,所以這個路徑是可以任意位置資源。

兩次請求,不能在多個資源使用request共享數(shù)據(jù)

因為瀏覽器發(fā)送了兩次請求,是兩個不同的request對象,就無法通過request對象進行共享數(shù)據(jù)

介紹完請求重定向和請求轉(zhuǎn)發(fā)以后,接下來需要把這兩個放在一塊對比下:

JavaWeb中的Request和Response怎么使用

以后到底用哪個,還是需要根據(jù)具體的業(yè)務(wù)來決定。

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

要想將字符數(shù)據(jù)寫回到瀏覽器,我們需要兩個步驟:

  • 通過Response對象獲取字符輸出流: PrintWriter writer = resp.getWriter();

  • 通過字符輸出流寫數(shù)據(jù): writer.write(“aaa”);

接下來,我們實現(xiàn)通過些案例把響應(yīng)字符數(shù)據(jù)給實際應(yīng)用下:

返回一個簡單的字符串aaa

/**
 * 響應(yīng)字符數(shù)據(jù):設(shè)置字符數(shù)據(jù)的響應(yīng)體
 */
@WebServlet("/resp3")
public class ResponseDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        //1. 獲取字符輸出流
        PrintWriter writer = response.getWriter();
		 writer.write("aaa");
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

以上就是關(guān)于“JavaWeb中的Request和Response怎么使用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI