Rumah  >  Artikel  >  Java  >  Cara menggunakan objek Respons dalam Java Servlet

Cara menggunakan objek Respons dalam Java Servlet

WBOY
WBOYke hadapan
2023-06-02 21:11:29963semak imbas

Antara muka

Servlet Response

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.

Badan respons

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.

Pengepala Respons

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.

  • Collectionf7e83be87db5cd2d9a8a0b8117b38cd4 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

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam