ServletResponse
介面提供了一系列方法來設定和取得 HTTP 回應的資訊。一個 ServletResponse
實例代表了一個 HTTP 回應,而這個回應可以包含一些 HTML 等內容和一些狀態訊息,如 HTTP 狀態碼和頭資訊。
使用 ServletResponse
接口,你可以輕鬆地向客戶端發送回應體。響應體是 HTTP 回應的主要內容,可以是 HTML、CSS、JavaScript、文字或其他資料類型。以下是一些常用的方法:
void setContentType(String type)
:設定回應體的類型。例如,如果要傳回 HTML 內容,則可以使用 text/html
作為 type
的值。
void setCharacterEncoding(String encoding)
:設定回應體的字元編碼。例如,如果要傳回 UTF-8 編碼的 HTML 內容,則可以使用 UTF-8
作為 encoding
的值。
PrintWriter getWriter()
:取得一個 PrintWriter
實例,用於傳送字元資料到客戶端。
ServletOutputStream getOutputStream()
:取得一個 ServletOutputStream
實例,用於傳送位元組資料到客戶端。
下面是一個範例程式碼,程式碼會傳送一個包含HTML 內容的回應給客戶端:
@WebServlet("/example") public class ExampleServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Example Servlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h2>Hello, world!</h2>"); out.println("</body>"); out.println("</html>"); } }
在上面的程式碼中,我們首先使用response.setContentType("text/html")
方法設定響應體的類型為HTML。然後,我們使用 response.setCharacterEncoding("UTF-8")
方法設定響應體的字元編碼為 UTF-8。接著,我們使用 response.getWriter()
方法取得一個 PrintWriter
實例,然後使用 out.println()
方法向客戶端傳送 HTML 內容。
除了回應體,HTTP 回應還可以包含一些元數據,例如回應頭資訊。回應頭資訊提供了一些有關回應的附加訊息,如反應體的類型、字元編碼、過期時間等。使用 ServletResponse
接口,你也可以輕鬆地設定和取得回應頭資訊。以下是一些常用的方法:
void setHeader(String name, String value)
:設定回應頭資訊。例如,如果要設定Content-Disposition
頭訊息,則可以使用Content-Disposition
作為name
的值,attachment; filename="example. txt"
作為value
的值。
void addHeader(String name, String value)
:新增回應頭資訊。例如,如果要新增Cache-Control
頭訊息,則可以使用Cache-Control
作為name
的值,no-cache
作為value
的值。
void setIntHeader(String name, int value)
:設定回應頭訊息,值為一個整數。例如,如果要設定Content-Length
頭訊息,則可以使用Content-Length
作為name
的值,檔案大小作為value
的值。
void addIntHeader(String name, int value)
:新增回應頭訊息,值為一個整數。例如,如果要新增 Expires
頭訊息,則可以使用 Expires
作為 name
的值,時間戳記作為 value
的值。
String getHeader(String name)
:取得指定名稱的回應頭資訊。例如,如果要取得 Content-Type
頭信息,則可以使用 Content-Type
作為 name
的值。
Collectionf7e83be87db5cd2d9a8a0b8117b38cd4 getHeaders(String name)
:取得指定名稱的所有回應頭資訊。例如,如果要取得 Set-Cookie
頭訊息,則可以使用 Set-Cookie
作為 name
的值。
int getIntHeader(String name)
:取得指定名稱的整數型回應頭資訊。例如,如果要取得 Content-Length
頭訊息,則可以使用 Content-Length
作為 name
的值。
回應狀態是指 HTTP 回應的狀態碼,表示伺服器對請求的處理結果。使用 ServletResponse
接口,你也可以設定回應狀態碼。以下是一些常用的狀態碼:
200
:表示請求已成功,且伺服器已傳回所要求的資料。
302
:表示請求的資源已移至新的位置,並且新的位置已經在回應頭資訊中傳回。
404
:表示請求的資源不存在。
500
:表示伺服器在處理請求時發生了錯誤。
设置响应状态码的方法如下:
void setStatus(int sc)
:设置响应状态码。例如,如果要设置状态码为 200
,则可以使用 setStatus(200)
。
下面是一个示例代码,该代码会向客户端发送一个包含 HTML 内容的响应,并设置响应头信息和状态码:
@WebServlet("/example") public class ExampleServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); response.setStatus(HttpServletResponse.SC_OK); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Example Servlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h2>Hello, world!</h2>"); out.println("</body>"); out.println("</html>"); } }
在上面的代码中,我们使用 HttpServletResponse.SC_OK
设置响应状态码为 200
。然后,我们使用 response.setHeader("Cache-Control", "no-cache")
方法设置 Cache-Control
头信息为 no-cache
。最后,我们使用 out.println()
方法向客户端发送 HTML 内容。
以上是Java Servlet中Response物件如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!