通过 web.xml 配置 Servlet 映射

通过 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 处理:

使用 * 通配符映射

Servlet 访问 URL 支持使用 * 通配符,通常配置为 *.do/xxx/* 的形式。* 可以匹配任意字符。

方式一:/xxx/*

<servlet-mapping>
    <servlet-name>HomeServlet</servlet-name>
    <url-pattern>/home/*</url-pattern>
</servlet-mapping>Code language: HTML, XML (xml)

以下地址均可访问:

方式二:*.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 启动失败。

以下地址均可访问:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注