7.1 Skema umum web.xml
File web.xml nyimpen informasi konfigurasi aplikasi. Iku dudu bagean wajib, nanging digunakake banget kanggo ngatur aplikasi web.
Berkas iki kudu ana ing folder WEB-INF . Nalika Tomcat diwiwiti, maca isine lan nggunakake konfigurasi sing ana. Yen file kasebut ngemot kesalahan, Tomcat uga nampilake kesalahan.
Tuladha web.xml:
<?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>
"HelloWorld"Pemetaan jeneng servlet lan kelas servlet ditulis ing kene kanthi warna ijo"HelloServlet" . Pemetaan jeneng servlet lan potongan URL ditulis nganggo warna biru"HelloWorld""http://localhost/welcome" . Mangkono, ngandika ing kene nalika ngakses / welcome path, sampeyan kudu nelpon servlet HelloServlet.class.
Werna abang nuduhake file sing kudu diwenehake nalika dijaluk http://localhost/- iki sing diarani kaca sambutan . Yen pangguna mung ngetik ing browser jeneng sing cocog karo ROOT saka aplikasi web kita, banjur isi saka index.html.
7.2 servlet, servlet-pemetaan
Siji servlet bisa nglayani panjalukan ing URL sing beda-beda, mula ing web-xml, servlet lan pemetaan menyang URL ditulis kanthi kapisah. Pisanan, kita njlèntrèhaké servlets, menehi saben jeneng string unik, banjur kita nemtokake carane saben servlet map kanggo url.
Tuladha web.xml:
<web-app>
<servlet>
<servlet-name>remoting</servlet-name>
<servlet-class>com.codegym.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.codegym.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>
Ing conto iki, rong servlet diumumake, lan saben dipetakan menyang cithakan url sing beda. Servlet RemotingServletnglayani kabeh panjalukan sing menyang/remoting/* . Servlet RestApiServletnglayani kabeh panjalukan sing menyang/api/* . Servlet uga duwe urutan saka loading - parameter load-on-startup.
7.3 Pilihan Servlet
Kanthi bantuan web.xml, paramèter bisa ditransfer menyang servlet sajrone initialization, bakal kasedhiya liwat antarmuka ServletConfig. Sampeyan uga bisa nyetel paramèter kanggo kabeh aplikasi web, bakal kasedhiya liwat ServletContext.
Tuladha web.xml:
<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.codegym.ApplicationServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>com.codegym.App</param-value>
</init-param>
<init-param>
<param-name>widgetset</param-name>
<param-value>com.codegym.WidgetSet</param-value>
</init-param>
<init-param>
<param-name>ui</param-name>
<param-value>com.codegym.AppUI</param-value>
</init-param>
</servlet>
</web-app>
Kode sing disorot ing ijo yaiku ing ngendi kita nyetel paramèter kanggoServletContext . Ana loro:
productionModekanthi nilai palsuappPropertiesConfigkanthi susunan rong senar:classpath:local-app.propertiesclasspath:web-app.properties
Parameter kanggo servlet dituduhake kanthi warna biruApplicationServlet , bakal kasedhiya liwat ServletConfig:
applicationkaro nilai com.codegym.Appwidgetsetkaro nilai com.codegym.WidgetSetuikaro nilai com.codegym.AppUI
7.4 saringan, pemetaan saringan
Aplikasi web uga bisa ngemot utility servlets - filters. Dheweke nindakake macem-macem tugas layanan: pangalihan telpon, mriksa wewenang, lsp.
Tuladha web.xml:
<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>
Sadurunge panyuwunan tekan servlet RemotingServlet, bakal diproses dening panyaring TotalFiler. Filter iki dikonfigurasi kanggo nyegat kabeh panjalukan sing menyang aplikasi web kita. Iki digambarake kanthi jelas dening cithakan url sing dipetakan menyang: /*.
Sampeyan bakal maca liyane babagan servlet lan saringan ing kuliah ing ngisor iki.
GO TO FULL VERSION