JavaRush /Kurslar /All lectures for UZ purposes /Servletda so'rovlarni qayta ishlash

Servletda so'rovlarni qayta ishlash

All lectures for UZ purposes
Daraja, Dars
Mavjud

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();
        }
    }
}



Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION