多个 Servlet 映射
Multiple Servlet Mappings
我在分配给我的项目中打开了一个 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 的两个不同实例是否 initialized/loaded?
或者是否加载了特定 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
定义的参数在初始化时发送到 servlet,但它仍然是同一个 servlet 定义。
Struts 然后读取配置并处理初始化的 servlet 中的配置。
您的应用程序中有多少个 servlet class 实例由 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 的两个不同实例是否 initialized/loaded? 或者是否加载了特定 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
定义的参数在初始化时发送到 servlet,但它仍然是同一个 servlet 定义。
Struts 然后读取配置并处理初始化的 servlet 中的配置。
您的应用程序中有多少个 servlet class 实例由 servlet 容器决定。