2.1 HttpServletRequest klassi
Servleting ko'p ishini so'rovdan olingan ma'lumotlar asosida bajarishi kerak. Bu uchun HttpServletRequest obyekti javobgar, bu obyekt container tomonidan servletingga yuboriladi (metod service yoki metodlar doGet(), doPost() va hokazo)
Ushbu obyektning ko'p metodlari bor, chunki u so'rov ma'lumotlarini saqlaydi va container bilan o'zaro aloqada bo'lishi mumkin.
Metodlar ikki katta gruppaga bo'linadi:
- Foydalanuvchi avtorizatsiyasi bilan bog'liq metodlar
- So'rov ma'lumotlari bilan ishlash metodlari
Foydalanuvchi avtorizatsiyasi bo'yicha metodlarni jadvalda keltiraman, lekin ularni muhokama qilmaymiz. Chunki ular foydalanuvchi avtorizatsiyasi uchun juda kamdan-kam ishlatiladi. Mashhur freymvorklar o'zlarining juda rivojlangan yondashuvlarini ishlatishadi.
Ularning ro'yxatini ko'rsatishim kerak, lekin yana, men ularni kimdir ishlatganini ko'rmadim.
| Metod | Tavsif | |
|---|---|---|
| 1 | authenticate(HttpServletResponse) |
Response autentifikatsiyasini bajaradi |
| 2 | changeSessionId() |
Session ID ni majburiy o'zgartirish |
| 3 | getAuthType() |
Foydalaniladigan autentifikatsiya turini qaytaradi: BASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH |
| 4 | getRemoteUser() |
Foydalanuvchi loginini qaytaradi |
| 5 | getRequestedSessionId() |
Client SessionID ni qaytaradi |
| 6 | getSession() |
HttpSession ob'yektini qaytaradi |
| 7 | getUserPrincipal() |
java.security.Principal ob'yektini qaytaradi |
| 8 | login(username, password) |
Foydalanuvchi loginini bajaradi |
| 9 | logout() |
Foydalanuvchi sessiyasidan chiqish |
2.2 So'rov ma'lumotlari
Ikkinchi guruh metodlari ancha qiziqarli. So'rovda qanday ma'lumotlar bor?
- http-metod
- URI
- Parametrlar
- Headerlar
Ularga ishlash uchun qanday metodlar borligini ko'rib chiqamiz:
| Metod | Tavsif | |
|---|---|---|
| 1 | getMethod() |
HTTP-metodini qaytaradi: GET, POST, DELETE, … |
| 2 | getRequestURI() |
So'rov URI ni qaytaradi: http://javarush.com/my/data |
| 3 | getRequestURL() |
So'rov URL ni qaytaradi: http://javarush.com/my/data |
| 4 | getQueryString() |
Query ni qaytaradi, ya'ni ? belgidan keyingi hamma narsa |
| 5 | getParameterMap() |
So'rov parametrlarining ro'yxatini qaytaradi |
| 6 | getParameter(String name) |
Parametrning nomiga ko'ra qiymatini qaytaradi |
| 7 | getContentType() |
MimeType request body ni qaytaradi |
| 8 | getReader() |
Reader, request body ni matn sifatida o'qish uchun |
| 9 | getInputStream() |
InputStream, request body ni byte[] sifatida o'qish uchun |
| 10 | getSession() |
HttpSession ob'yektini qaytaradi |
| 11 | getCookies() |
Cookie[] ob'ektlari massivini qaytaradi |
| 12 | getHeaderNames() |
Headerlar ro'yxatini, faqat nomlarini qaytaradi |
| 13 | getHeader(String name) |
Headerning nomiga ko'ra qiymatini qaytaradi |
| 14 | getServletPath() |
URL ning servletga tegishli qismini qaytaradi |
| 15 | getContextPath() |
So'rov kontekstining URI qismini qaytaradi |
Va bu hamma metodlari emas...
HTTP protokolini o'rganganimizdan va HttpClient bilan ishlashni o'rganganimizdan keyin, bu joyda hamma narsa bir qadar tanish, to'g'rimi?
Keling, input sifatida matn va rangni qabul qiluvchi, va shu matnni kiritilgan rangda qaytaruvchi HTML sahifani qaytaradigan servlet yozamiz. Fikr qanday?
Servletimizni yozishdan boshlaymiz:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
//bu yerda kodingizni yozing
}
}
Endi, URI orqali foydalanuvchi tomonidan yuborilgan matn va rangni olishimiz kerak:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// So'rovdan “text” va “color” parametrlarini olish
String text= request.getParameter("text");
String color = request.getParameter("color");
}
}
Va nihoyat, matnni HTML ko'rinishida chiqarish kerak. Keyingi lektsiyada shu mavzuni ko'rib chiqamiz, lekin bu erda ozgina yordam beraman:
public class ColorTextServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// So'rovdan “text” va “color” parametrlarini olish
String text = request.getParameter("text");
String color = request.getParameter("color");
// Brauzer uchun javob sifatida HTML ni chop etish
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