我已经在分配给的项目中打开了一个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类的实例。