Because a Struts application is a Web application, it has to follow the same rules. that any Web application has to follow: Every Web application must have a web.xml configuration file. The web.xml file should define the ActionServlet, which functions as a controller from the standpoint of the MVC(Model - View - Controller)framework. In other words, every request to a Struts application has to go through the ActionServlet. the ActionServlet is provided by the Struts frameword.
The example web.xml file as shown below, has three different categories of configuration information:
- ActionServlet configuraton
- ActionServlet mapping
- Struts tag library descriptors
Under ActionServlet configuration section, note that several initialization parameters are specified as following through <init-param> elements:
- <param-name>application</param-name>
defines message resource file. it is set as following:
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param> - <param-name>config</param-name>
defines the path of the Struts configuration file. For example, the path of the Struts configuration file set to ./WEB-INF/struts-config.xml.
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml<param-value>
</init-param>
Under ActionServlet mapping configuration section shown below, it is set in the way that every request that has *.do URL pattern will be handled by the ActionServlet.
- <servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
Under Struts tag Library Descriptors configurations section, note three Struts tag libraries are configured.
A complete web.xml example:
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<display-name>Advanced J2EE Programming Class Sample App</display-name>
<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- Struts Tag Library Descriptors -->
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
</web-app>