Antara muka
ServletResponse
menyediakan satu siri kaedah untuk menetapkan dan mendapatkan maklumat respons HTTP. Contoh ServletResponse
mewakili respons HTTP, dan respons ini boleh mengandungi beberapa HTML dan kandungan lain serta beberapa maklumat status, seperti kod status HTTP dan maklumat pengepala.
Menggunakan antara muka ServletResponse
, anda boleh menghantar badan respons kepada pelanggan dengan mudah. Badan respons ialah kandungan utama respons HTTP dan boleh berupa HTML, CSS, JavaScript, teks atau jenis data lain. Berikut ialah beberapa kaedah yang biasa digunakan:
void setContentType(String type)
: Tetapkan jenis badan tindak balas. Contohnya, jika anda ingin mengembalikan kandungan HTML, anda boleh menggunakan text/html
sebagai nilai type
.
void setCharacterEncoding(String encoding)
: Tetapkan pengekodan aksara badan respons. Contohnya, jika anda ingin mengembalikan kandungan HTML yang dikodkan UTF-8, anda boleh menggunakan UTF-8
sebagai nilai encoding
.
PrintWriter getWriter()
: Dapatkan contoh PrintWriter
untuk menghantar data aksara kepada pelanggan.
ServletOutputStream getOutputStream()
: Mendapat contoh ServletOutputStream
untuk menghantar bait data kepada pelanggan.
Berikut ialah contoh kod yang akan menghantar respons dengan kandungan HTML kepada klien:
@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>"); } }
Dalam kod di atas, kami mula-mula menggunakan response.setContentType("text/html")
Kaedah menetapkan jenis badan respons kepada HTML. Kemudian, kami menggunakan kaedah response.setCharacterEncoding("UTF-8")
untuk menetapkan pengekodan aksara badan tindak balas kepada UTF-8. Seterusnya, kami menggunakan kaedah response.getWriter()
untuk mendapatkan contoh PrintWriter
, dan kemudian menggunakan kaedah out.println()
untuk menghantar kandungan HTML kepada klien.
Selain badan respons, respons HTTP juga boleh mengandungi beberapa metadata, seperti maklumat pengepala respons. Maklumat pengepala respons menyediakan beberapa maklumat tambahan tentang respons, seperti jenis badan respons, pengekodan aksara, masa tamat tempoh, dsb. Menggunakan antara muka ServletResponse
, anda juga boleh menetapkan dan mendapatkan maklumat pengepala respons dengan mudah. Berikut ialah beberapa kaedah yang biasa digunakan:
void setHeader(String name, String value)
: Tetapkan maklumat pengepala respons. Contohnya, jika anda ingin menetapkan pengepala Content-Disposition
, anda boleh menggunakan Content-Disposition
sebagai nilai name
dan attachment; filename="example.txt"
sebagai nilai value
.
void addHeader(String name, String value)
: Tambahkan maklumat pengepala respons. Contohnya, jika anda ingin menambah pengepala Cache-Control
, anda boleh menggunakan Cache-Control
sebagai nilai name
dan no-cache
sebagai nilai value
.
void setIntHeader(String name, int value)
: Tetapkan maklumat pengepala respons, nilainya ialah integer. Contohnya, jika anda ingin menetapkan pengepala Content-Length
, anda boleh menggunakan Content-Length
sebagai nilai name
dan saiz fail sebagai nilai value
.
void addIntHeader(String name, int value)
: Tambahkan maklumat pengepala respons, nilainya ialah integer. Contohnya, jika anda ingin menambah pengepala Expires
, anda boleh menggunakan Expires
sebagai nilai name
dan cap masa sebagai nilai value
.
String getHeader(String name)
: Dapatkan maklumat pengepala respons bagi nama yang ditentukan. Contohnya, jika anda ingin mendapatkan maklumat pengepala Content-Type
, anda boleh menggunakan Content-Type
sebagai nilai name
.
Collection<String> getHeaders(String name)
: Dapatkan semua maklumat pengepala respons bagi nama yang ditentukan. Contohnya, jika anda ingin mendapatkan maklumat pengepala Set-Cookie
, anda boleh menggunakan Set-Cookie
sebagai nilai name
.
int getIntHeader(String name)
: Dapatkan maklumat pengepala respons integer bagi nama yang ditentukan. Contohnya, jika anda ingin mendapatkan maklumat pengepala Content-Length
, anda boleh menggunakan Content-Length
sebagai nilai name
.
Status respons merujuk kepada kod status respons HTTP, yang menunjukkan hasil pemprosesan permintaan pelayan. Menggunakan antara muka ServletResponse
, anda juga boleh menetapkan kod status respons. Berikut ialah beberapa kod status yang biasa digunakan:
200
: Menunjukkan bahawa permintaan itu berjaya dan pelayan telah mengembalikan data yang diminta.
302
: Menunjukkan bahawa sumber yang diminta telah dialihkan ke lokasi baharu dan lokasi baharu telah dikembalikan dalam maklumat pengepala respons.
404
: Menunjukkan bahawa sumber yang diminta tidak wujud.
500
: Menunjukkan bahawa ralat berlaku semasa pelayan sedang memproses permintaan.
设置响应状态码的方法如下:
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 内容。
Atas ialah kandungan terperinci Cara menggunakan objek Respons dalam Java Servlet. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!