2.1 Kelas HttpServletRequest
Kebanyakan kerja servlet anda perlu lakukan berdasarkan maklumat yang diterima daripada permintaan. Objek bertanggungjawab untuknya HttpServletRequest
, yang mana bekas akan dihantar ke servlet anda (kepada kaedah service
atau kaedah doGet()
, doPost()
dsb.)
Objek ini mempunyai beberapa kaedah, kerana ia hanya menyimpan data permintaan, dan melaluinya anda boleh berinteraksi dengan bekas.
Kaedah boleh dibahagikan kepada 2 kumpulan besar:
- Kaedah yang berkaitan dengan kebenaran pengguna
- Kaedah untuk bekerja dengan data permintaan
Saya akan memberikan kaedah kebenaran pengguna dalam bentuk jadual, tetapi kami tidak akan menganalisisnya. Hakikatnya ialah mereka sangat jarang digunakan untuk memberi kebenaran kepada pengguna. Semua rangka kerja popular menggunakan pendekatan mereka sendiri yang jauh lebih maju untuk kebenaran.
Saya sepatutnya menyenaraikannya, tetapi sekali lagi, saya tidak pernah melihat sesiapa menggunakannya.
Kaedah | Penerangan | |
---|---|---|
1 | authenticate(HttpServletResponse) |
Melaksanakan pengesahan respons |
2 | changeSessionId() |
Tukar ID sesi secara paksa |
3 | getAuthType() |
Mengembalikan jenis pengesahan yang digunakan: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
4 | getRemoteUser() |
Mengembalikan log masuk pengguna |
5 | getRequestedSessionId() |
Mengembalikan ID Sesi pelanggan |
6 | getSession() |
Mengembalikan objek HttpSession |
7 | getUserPrincipal() |
Mengembalikan objek java.security.Principal |
8 | login(username, password) |
Melakukan log masuk pengguna |
9 | logout() |
Log keluar sesi pengguna |
2.2 Meminta data
Kumpulan kedua kaedah adalah lebih menarik. Apakah jenis data yang kami ada dalam permintaan?
- kaedah http
- URI
- Pilihan
- Tajuk
Mari lihat kaedah yang tersedia untuk bekerja dengan mereka:
Kaedah | Penerangan | |
---|---|---|
1 | getMethod() |
Mengembalikan kaedah HTTP: GET, POST, DELETE, ... |
2 | getRequestURI() |
Mengembalikan URI permintaan: http://codegym.cc/my/data |
3 | getRequestURL() |
Mengembalikan URL permintaan: http://codegym.cc/my/data |
4 | getQueryString() |
Mengembalikan Pertanyaan, iaitu segala-galanya selepas ? |
5 | getParameterMap() |
Mengembalikan senarai parameter pertanyaan |
6 | getParameter(String name) |
Mengembalikan nilai parameter dengan namanya |
7 | getContentType() |
Mengembalikan badan permintaan MimeType |
8 | getReader() |
Pembaca untuk membaca isi permintaan sebagai teks |
9 | getInputStream() |
InputStream untuk membaca badan permintaan sebagai bait[] |
10 | getSession() |
Mengembalikan objek HttpSession |
sebelas | getCookies() |
Mengembalikan tatasusunan objek Cookie[]. |
12 | getHeaderNames() |
Mengembalikan senarai tajuk, nama sahaja |
13 | getHeader(String name) |
Mengembalikan nilai pengepala mengikut nama |
14 | getServletPath() |
Mengembalikan bahagian URL yang merujuk kepada servlet |
15 | getContextPath() |
Mengembalikan bahagian URI yang menentukan kandungan permintaan |
Dan itu bukan semua kaedah ...
Walaupun selepas kami mempelajari protokol HTTP dan belajar cara bekerja dengan HttpClient, semuanya lebih kurang biasa di sini, bukan?
Mari kita tulis servlet yang boleh dihantar teks dan warna ke, dan ia akan mengembalikan halaman HTML dengan teks itu ditulis dalam warna yang ditentukan. Bagaimana anda menyukai idea itu?
Mari mulakan dengan menulis servlet kami:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//write your code here
}
}
Sekarang kita perlu mendapatkan teks dan warna yang diluluskan dari URI oleh pengguna:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Getting the parameter “text” and “color” from request
String text= request.getParameter("text");
String color = request.getParameter("color");
}
}
Dan akhirnya, anda perlu mengeluarkan teks sebagai HTML. Kami akan membincangkan perkara ini dalam kuliah seterusnya, tetapi di sini saya akan memberikan sedikit petunjuk:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Get the "text" and "color" parameters from the request
String text = request.getParameter("text");
String color = request.getParameter("color");
// Print the HTML as a response to the browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head> <title> ColorTextServlet </title> </head>");
out.println("<body>");
out.println("<h1 style="color:"+color+">"+text+"</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
GO TO FULL VERSION