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 RemotingServlet
nglayani kabeh panjalukan sing menyang/remoting/*
. Servlet RestApiServlet
nglayani 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:
productionMode
kanthi nilai palsuappPropertiesConfig
kanthi susunan rong senar:classpath:local-app.properties
classpath:web-app.properties
Parameter kanggo servlet dituduhake kanthi warna biruApplicationServlet
, bakal kasedhiya liwat ServletConfig
:
application
karo nilai com.codegym.Appwidgetset
karo nilai com.codegym.WidgetSetui
karo 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