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 HttpServletResponse
juga 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 HttpServletResponse
memiliki 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 a
dan b
mengembalikan 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();
}
}
}