通过 web.xml 配置 Servlet 映射
通过 web.xml 的配置,可以使得某个 URL 地址由指定的 Servlet 类来处理。通常在 web.xml 中使用 <servlet> 元素和 <servlet-mapping> 元素完成配置,这两个是同级别的标签。
它们内部都包含一个 <servlet-name> 子标签,如果名称相同,则表示这两个元素是一对。
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>cn.bamn.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>Code language: HTML, XML (xml)
上面这两个元素通过 servlet-name 同名对应起来,其中 <servlet-mapping> 配置了 URL 地址,该地址映射到 <servlet-class> 指定的类。
同一个 Servlet 映射到多个 URL
同一个 Servlet 可以被映射到多个 URL 上,即多个 <servlet-mapping> 元素的 <servlet-name> 设置值可以是同一个 Servlet 的注册名。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<servlet>
<servlet-name>HomeServlet</servlet-name>
<servlet-class>cn.bamn.demo.HomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/home/page</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/home/page1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/home/page2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/home/page3</url-pattern>
</servlet-mapping>
</web-app>Code language: HTML, XML (xml)
以上配置中,五个 <servlet-mapping> 对应同一个 <servlet>,访问以下任意地址都会由 HomeServlet 处理:
- http://localhost:8080/ServletDemo/home/page
- http://localhost:8080/ServletDemo/home/page1
- http://localhost:8080/ServletDemo/home/page2
- http://localhost:8080/ServletDemo/home/page3
使用 * 通配符映射
Servlet 访问 URL 支持使用 * 通配符,通常配置为 *.do 或 /xxx/* 的形式。* 可以匹配任意字符。
方式一:/xxx/*
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/home/*</url-pattern>
</servlet-mapping>Code language: HTML, XML (xml)
以下地址均可访问:
- http://localhost:8080/ServletDemo/home/dxx
- http://localhost:8080/ServletDemo/home/
- http://localhost:8080/ServletDemo/home/ddd
方式二:*.do
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>Code language: HTML, XML (xml)
注意:*.do 前面不能带有斜杠,如 /*.do 或 /home/*.do 都会导致 Tomcat 启动失败。
以下地址均可访问:
Next: Servlet类的生命周期