In a Jakarta EE (formerly Java EE) application, you can configure servlets in the web.xml deployment descriptor. The web.xml file is located in the WEB-INF directory of your project. Here’s how you can configure a servlet in web.xml step-by-step:
1. Declare the Servlet
You define the servlet by giving it a name and specifying its implementing class.
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>org.kodejava.servlet.MyServlet</servlet-class>
</servlet>
2. Map the Servlet to a URL Pattern
After declaring the servlet, you specify the URL patterns (endpoints) it should handle.
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myServlet</url-pattern>
</servlet-mapping>
The servlet-name in the <servlet-mapping> must match the one defined in the <servlet> section.
Complete Example
Below is a complete example of web.xml configuration for a servlet:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
version="6.0">
<!-- Declare the servlet -->
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>org.kodejava.servlet.MyServlet</servlet-class>
</servlet>
<!-- Map the servlet to a URL pattern -->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myServlet</url-pattern>
</servlet-mapping>
</web-app>
Understanding the Tags
<servlet>: Declares the servlet, including its name and fully qualified class name.<servlet-name>: A unique name for your servlet (used in<servlet-mapping>to link configuration).<servlet-class>: The fully qualified class name of the servlet (e.g.,org.kodejava.servlet.MyServlet).<servlet-mapping>: Maps the declared servlet to specific URL patterns (e.g.,/myServlet).<url-pattern>: Specifies the URL or set of URLs that the servlet will handle.
Notes:
- URL Patterns:
/myServletmatches a specific path./*matches all paths./example/*matches all paths under/example.
-
Multiple Servlet Mappings: You can map the same servlet to multiple URL patterns by adding multiple
<servlet-mapping>entries. - Override Annotations: If you use
@WebServletannotations in your servlet class, you generally won’t need to configure the servlet inweb.xml. However,web.xmlstill allows more control over deployment and compatibility with older specifications. - Jakarta EE Web.xml Version:
The<web-app>version should match the Jakarta EE version you are using. For Jakarta EE 10, useversion="6.0"as shown above.
