JavaRush /Kurslar /All lectures for UZ purposes /Annotatsiyalar yordamida veb-ilovalarni sozlash

Annotatsiyalar yordamida veb-ilovalarni sozlash

All lectures for UZ purposes
Daraja , Dars
Mavjud

8.1 Servlet annotatsiyalari bilan tanishuv

7-versiyadan boshlab Tomcat Servlet API 3.0 veb-servlet spetsifikatsiyasini qo'llab-quvvatlashni boshladi. Unda xususan javax.servlet.annotation nomli paket paydo bo'ldi. Bu paket turli xil annotatsiyalarni o'z ichiga olgan bo'lib, ularni servlet klassini annotatsiyalash uchun ishlatish mumkin. Agar sen annotatsiya ishlatsang, unda deployment deskriptor (web.xml) kerak emas.

Eng foydali annotatsiyalar ro'yxati:

Annotatsiya Ta'rif
1 @WebServlet Servlet e'lon qiladi
2 @WebInitParam Initsializatsiya parametrini ko'rsatadi
3 @WebFilter Veb-filtr e'lon qiladi
4 @WebListener Veb-listener e'lon qiladi
5 @ServletSecurity Xavfsizlik parametrlarini sozlash imkonini beradi

Misol:


@WebServlet( urlPatterns = {"/api/*"} )
public class Example extends HttpServlet {          
    protected void doGet( HttpServletRequest request, HttpServletResponse response) throws Exception {
         response.setContentType("text/html");
         PrintWriter out = response.getWriter();
         out.println("Салом Дунё!");
    }
}

Bitta annotatsiya yetarli, servletni e'lon qilish va uni /api/* namunasida belgilangan URL'ga keladigan barcha so'rovlarni xizmat qilish uchun mapping' qilish uchun.

8.2 Servlet mapping'ini sozlash

@WebServlet annotatsiyasida ko'plab parametrlar mavjud bo'lib, ular servletni juda moslashuvchan tarzda sozlash imkonini beradi. Asosiylari bilan tanishamiz:

Atribut Ta'rif
1 name Servletning noyob nomi (web.xml'dagi kabi)
2 displayName Odam uchun ko'rgazmali nom
3 description Servlet ta'rifi
4 value Mapping uchun URL'ni belgilaydi
5 urlPatterns Mapping uchun URL'lar ro'yxatini belgilaydi (value o'rniga ishlatiladi)
6 initParams Servletning boshlang'ich parametrlarini belgilash imkonini beradi
7 asyncSupported Servletning asinxron ishlash qobiliyatiga ega ekanligini ko'rsatadi (HTTP/2)
8 loadOnStartup Servletlarning ishga tushish tartibini boshqarish uchun raqamli indeks
9 smallIcon Servletning kichik ikonkasini belgilaydi
10 largeIcon Servletning katta ikonkasini belgilaydi

Bu yerda qiziqarli nuqtalar bir nechta.

Birinchidan, value va urlPatterns — o'zaro almashtiriladigan atributlardir. Ular ikkalasi ham servletni mapping qilinishi lozim bo'lgan URL'lar ro'yxatini belgilashga imkon beradi.

Ikkinchidan, asyncSupported parametri servletning HTTP/2 protokolida asinxron so'rovlarni to'g'ri qayta ishlay olishini ko'rsatadi.

Va uchinchi muhim atribut — bu initParams, u ServletContext'ga kiritiladigan parametrlar ro'yxatini belgilash imkonini beradi.

Misol:


@WebServlet( urlPatterns = {"/sendFile", "/uploadFile"}, loadOnStartup = 1, asyncSupported = true, initParams = { @WebInitParam(name = "saveDir", value = "c:/uploaded"), @WebInitParam(name = "allowedTypes", value = "jpg,gif,png") } )
public class ImageUploadServlet extends HttpServlet {
 
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String saveDir = getInitParameter("saveDir");
        String fileTypes = getInitParameter("allowedTypes");
 
        PrintWriter writer = response.getWriter();
 
        writer.println("saveDir = " + saveDir);
        writer.println("fileTypes = " + fileTypes);
    }
}

8.3 Filtr mapping'ini sozlash

Yuqorida aytilganidek, filtrlar — bu servletlarning xizmat turi bo'lib, ular servletlar kabi sozlanadi. @WebFilter annotatsiyasida quyidagi atributlar mavjud:

Atribut Ta'rif
1 filterName Filtrning noyob nomi (web.xml'dagi kabi)
2 displayName Filtrning odam uchun ko'rgazmali nomi
3 description Filtr ta'rifi
4 value / urlPatterns Mapping uchun URL'lar ro'yxatini belgilaydi
5 dispatcherTypes DispatcherType turlar ro'yxatini belgilaydi
6 servletNames Ulam ktamenda qo'llaniladigan servletlar ro'yxatini belgilaydi
7 initParams Filtrning boshlang'ich parametrlarini belgilash imkonini beradi
8 asyncSupported Filtrning asinxron ishlash qobiliyatiga ega ekanligini ko'rsatadi (HTTP/2)
9 smallIcon Filtrning kichik ikonkasini belgilaydi
10 largeIcon Filtrning katta ikonkasini belgilaydi

Muayyan servletlarga oid barcha so'rovlarni ushlab qoladigan filtr misoli:


@WebFilter(servletNames = {"MyOwnServlet", "UploadServlet"})
public class MyFilter implements Filter {
    // implements Filter's methods here...
}

Bir nechta parametrlari bor filtrning bir misoli:


@WebFilter( urlPatterns = "/uploadFilter", initParams = @WebInitParam(name = "fileTypes", value = "doc;xls;zip;txt;jpg;png;gif") )
public class UploadFilter implements Filter {
    // implements Filter's methods here...
}

RequestDispatcher uchun turlar belgilanadigan filtrning misoli:


@WebFilter( urlPatterns = "/admin", dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD} )
public class MyFilter implements Filter {
    // implements Filter's methods here...
}

Filtrlar va servletlarning vazifalari haqida batafsil ma'lumotni keyingi ma'ruzalarda bilib olasan.


Tomcat o'rnatish, sozlash, joylashtirish

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