CodeGym/Java Course/Modul 3/Membentuk Respons Servlet

Membentuk Respons Servlet

Level 12, Pelajaran 2
Tersedia

3.1 kelas HttpServletResponse

Setelah memanggil service()metode servlet Anda, wadah web akan menghasilkan respons ke klien berdasarkan HttpServletResponse. Jadi jika Anda ingin memengaruhi respons ke klien, maka Anda harus memodifikasi objek ini.

Respons server terdiri dari tiga bagian:

  • Baris status (misalnya: 200 OK)
  • Header
  • Tubuh respons

Dan metode kelas HttpServletResponsejuga dibagi menjadi 3 kelompok? Hampir:

Metode Keterangan
1 void setStatus(int sc) Menetapkan kode status respons.
2 void sendError(int sc) Mengirim kesalahan ke klien dengan kode yang ditentukan.
3 void sendError(int sc, String msg) Mengirim kesalahan dengan kode yang ditentukan dan pesan ke klien.
4 void addHeader(String name, String value) Menambahkan header ke daftar header respons.
5 void setHeader(String name, String value) Mengubah header dalam daftar header respons.
6 boolean containsHeader(String name) Cek apakah header sudah ada.
7 void addCookie(Cookie cookie) Menambahkan Cookie ke respons.
8 void sendRedirect(String location) Mengarahkan klien ke URL yang berbeda.
9 String encodeRedirectURL(String url) Mengkodekan URL yang ditentukan untuk digunakan dalam metode sendRedirect.
10 String encodeURL(String url) Mengkodekan URL yang ditentukan, termasuk ID sesi.
sebelas void setContentType(String type) Menyetel MimeType dari hasil.
12 void setContentLength(int len) Mengatur panjang badan respons.
13 void setCharacterEncoding(String charset) Menyetel set penyandian respons.
14 void setBufferSize(int size) Menetapkan ukuran buffer untuk badan respons.
15 boolean isCommitted() Memeriksa apakah buffer sudah ditulis ke respons.
16 void flushBuffer() Menulis isi buffer ke respons.
17 void reset() Mereset semua data yang disimpan dalam buffer, header, dan kode respons.
18 void resetBuffer() Menghapus buffer respons.

Metode di sini cukup sepele. Tapi saya akan memberi Anda beberapa sorotan di bawah ini.

Penyangga . Respons servlet Anda ditulis ke buffer, tidak langsung dikirim ke pengguna. Oleh karena itu, pada tahap tertentu (jika, misalnya, terjadi kesalahan), Anda dapat mengatur ulang (menghapus) semua yang ditulis ke buffer. Anda bahkan dapat memanggil metode reset() dan menghapus tidak hanya konten buffer, tetapi juga header dengan kode respons.

3.2 pengalihan()

Poin penting kedua adalah redirect. Jika servlet Anda memutuskan untuk mengarahkan klien ke URL lain, maka Anda perlu mengirimkan URL ini ke klien. Ini dapat dilakukan dengan menggunakan sendRedirect.

Namun ada nuansa penting. URI dapat berisi rentang karakter yang lebih luas daripada yang diizinkan di badan respons. Oleh karena itu, URL harus dikodekan terlebih dahulu ke dalam rangkaian karakter yang valid sebelum memanggil metode sendRedirect(). Ada metode khusus untuk ini encodeRedirectURL(String url). Gunakan.

Contoh pengalihan:

public class RedirectServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String newUrl = "http://google.com?q=Learn to google!";
        String redirectUrl = response.encodeRedirectURL(newUrl);
        response.sendRedirect(redirectUrl);
    }
}

3.3 metode getWriter()

Dan sekarang kita akan belajar bagaimana menulis teks kita sebagai badan tanggapan. Untuk melakukan ini, kelas HttpServletResponsememiliki metode khusus getWriter()yang mengembalikan objek PrintStream. Kalau ada yang lupa, ini adalah jenis field dengan nama System.out.

Untuk menulis beberapa teks sebagai respons servlet, Anda memerlukan:

  • Dapatkan objek PrintStream dengan memanggil response.getWriter().
  • Tulis apa pun yang menurut Anda perlu ke objek PrintStream (semua data akan ditulis ke buffer).
  • Kirim buffer ke pengguna dengan memanggil metode close()di PrintStream.

Mari tulis servlet yang menambahkan dua angka adan bmengembalikan hasilnya ke pengguna:

public class CalculatorServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
         // Getting the parameter “a” and “b” from request
        String a = request.getParameter("a");
        String b = request.getParameter("b");

        try {
            // Convert strings to numbers and calculate sum
            int sum = Integer.parseInt(a) + Integer.parseInt(b);

            // Print HTML as a response for browser
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();

            out.println("<html>");
            out.println("<head> <title> CalculatorServlet </title> </head>");
            out.println("<body>");
            out.println("<h1> Sum == " + sum + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}
Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar