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:
productionModeqiymati false bilanappPropertiesConfigikki qatorli massiv:classpath:local-app.propertiesclasspath:web-app.properties
Ko'k rangda ApplicationServlet servlеti uchun parametrlar ko'rsatilgan, ular ServletConfig orqali mavjud bo'ladi:
applicationqiymati com.javarush.App bilanwidgetsetqiymati com.javarush.WidgetSet bilanuiqiymati 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.
GO TO FULL VERSION