【问题标题】:Multiple Servlet Mappings多个 Servlet 映射
【发布时间】:2017-03-10 11:40:44
【问题描述】:

我在分配给我的项目中打开了一个 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 的一个版本?

【问题讨论】:

    标签: java servlets struts-1


    【解决方案1】:

    本节

    <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 定义的参数在初始化时发送到servlet,但它仍然是一个相同的servlet 定义。

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

    应用程序中有多少个 servlet 类实例由 servlet 容器决定。

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 2016-06-30
      • 1970-01-01
      • 2013-02-18
      • 2015-03-01
      • 2011-11-01
      • 2017-09-12
      • 2012-01-20
      • 2017-09-21
      相关资源
      最近更新 更多