多个servlet映射



我已经在分配给的项目中打开了一个web.xml文件,并且正在看到具有相同servlet名称的多个servlet映射:

   <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>/beta/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

此外,特定的servlet似乎包括两种不同的配置:

<servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.common.utils.HeadCompliantActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>config/beta</param-name>
            <param-value>/WEB-INF/struts-config-beta.xml</param-value>
        </init-param>

所以我的问题是...

是否初始化/加载了特定servlet的两个不同的实例?还是加载了一个特定servlet的一个版本?

此部分

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>/beta/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

指定您的servlet应响应哪些模式。使用与您的情况相同的servlet具有多个URL模式是非常正确的。

,然后是本节:

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.common.utils.HeadCompliantActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
        <param-name>config/beta</param-name>
        <param-value>/WEB-INF/struts-config-beta.xml</param-value>
    </init-param>

这只是一个一个 servlet而不是两个定义。但是,它具有两个参数,这些参数用 init-param定义的参数发送到init上的servlet,但它仍然是一个相同的servlet定义。

Struts然后读取配置并处理servlet初始化的配置。

您将在应用程序中将拥有多少个servlet类的实例。

最新更新