web.xml Tuzilishi

All lectures for UZ purposes
Daraja, Dars
Mavjud

7.1 Umumiy web.xml sxemasi

web.xml fayli ilova konfiguratsiyasi haqidagi ma'lumotlarni saqlaydi. Bu majburiy emas, lekin veb-ilovani sozlash uchun keng qo'llaniladi.

Bu fayl WEB-INF papkasida joylashgan bo'lishi kerak. Tomcat ishga tushganda uning mazmunini o'qib, yozilgan konfiguratsiyani ishlatadi. Agar faylda xatolar bo'lsa, Tomcat xatoni ko'rsatadi.

web.xml misol:



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  
  <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet>
    
 <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/welcome</url-pattern> </servlet-mapping>
 
 <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list>
  
</web-app>

Yashil rangda servlet nomi "HelloWorld" va servlet sinfi "HelloServlet"ni mapping qilish ko'rsatilgan. Ko'k rangda servlet nomi "HelloWorld" va URL qismi "http://localhost/welcome" ko'rsatilgan. Shunday qilib, /welcome ga kirilganda HelloServlet.class servletini chaqirish kerakligi yozilgan.

Qizil rangda http://localhost/ so'roviga beriladigan fayl ko'rsatilgan - bu xush kelibsiz sahifa, ya'ni welcome page. Agar foydalanuvchi brauzerida saytimizning ildizi bo'lgan nomni kiritsa, unga index.html fayli kontenti beriladi.

7.2 servlet, servlet-mapping

Bitta servlet turli URL-lar bo'yicha so'rovlarni qayta ishlashi mumkin, shuning uchun web-xml da servlet va uning URL mappingi alohida ko'rsatiladi. Avval servletlarni yozamiz, har biriga noyob nom beramiz, keyin esa har bir servleti qaysi URL bilan mapping qilishni ko'rsatamiz.

web.xml misol:



<web-app>
  
  <servlet> <servlet-name>remoting</servlet-name> <servlet-class>com.javarush.RemotingServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>remoting</servlet-name> <url-pattern>/remoting/*</url-pattern> </servlet-mapping>
 
 <servlet> <servlet-name>restapi</servlet-name> <servlet-class>com.javarush.RestApiServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>restapi</servlet-name> <url-pattern>/api/*</url-pattern> </servlet-mapping>  
 
</web-app>

Bu misolda ikki servlet e'lon qilingan, va har biri o'ziga xos URL andozasiga mapping qilingan. RemotingServlet servlеti barcha /remoting/* ga yo'naltirilgan so'rovlarni qayta ishlaydi. RestApiServlet servlеti barcha /api/* ga yo'naltirilgan so'rovlarni qayta ishlaydi. Shuningdek, servletlar uchun yuklash tartibi yozilgan — load-on-startup parametri.

7.3 Servlet parametrlari

web.xml yordamida servlet boshlanganda unga parametrlar berilishi mumkin, ular ServletConfig interfeysi orqali mavjud bo'ladi. Shuningdek, butun veb-ilova uchun parametrlarni belgilashimiz mumkin, ular ServletContext interfeysi orqali mavjud bo'ladi.

web.xml misol:



<web-app>
 <context-param> <description>Server production mode</description> <param-name>productionMode</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>appPropertiesConfig</param-name> <param-value> classpath:local-app.properties classpath:web-app.properties </param-value> </context-param>
 
 <servlet> <servlet-name>mainservlet</servlet-name> <servlet-class>com.javarush.ApplicationServlet</servlet-class> <init-param> <param-name>application</param-name> <param-value>com.javarush.App</param-value> </init-param> <init-param> <param-name>widgetset</param-name> <param-value>com.javarush.WidgetSet</param-value> </init-param> <init-param> <param-name>ui</param-name> <param-value>com.javarush.AppUI</param-value> </init-param> </servlet>
</web-app>

Yashil rangda ServletContext uchun parametrlarni belgilash ko'rsatilgan. U yerda ikki parametr bor:

  • productionMode qiymati false bilan
  • appPropertiesConfig ikki qatorli massiv:
    • classpath:local-app.properties
    • classpath:web-app.properties

Ko'k rangda ApplicationServlet servlеti uchun parametrlar ko'rsatilgan, ular ServletConfig orqali mavjud bo'ladi:

  • application qiymati com.javarush.App bilan
  • widgetset qiymati com.javarush.WidgetSet bilan
  • ui qiymati com.javarush.AppUI bilan

7.4 filter, filter-mapping

Veb-ilova maxsus xizmat servltlari — filtrlari ham ega bo'lishi mumkin. Ular turli xizmat vazifalarini bajarishadi: chaqiruvlarni yo'naltirish, avtorizatsiya tekshiruvi va boshqalar.

web.xml misol:



<web-app>
 
 <servlet> <servlet-name>remoting</servlet-name> <servlet-class>RemotingServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>remoting </servlet-name> <url-pattern>/remoting/*</url-pattern> </servlet-mapping>
 
 <filter> <filter-name>total_filter</filter-name> <filter-class>com.javrush.TotalFilter</filter-class> </filter> <filter-mapping> <filter-name>total_filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
 
</web-app>

So'rov RemotingServlet servlеtiga yetmasdan oldin, TotalFiler filtridan o'tadi. Bu filtr barcha so'rovlarni ushlab turadi, ular veb-ilovamizga keladi. Buni qiluvchi URL-andeza /*.

Servletlar va filtrlar haqida ko'proq keyingi leksiyalarda o'qib olasiz.

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