Each top level project (eg. GsMain) has one ControllerServlet. This Servlet is responsible for directing requests from a user, getting the correct Page and Action commands from the correct ControllerCore and then forwarding the results back the the user. An example of this class is at [ControllerServlet]. It is configured using the following snippet in web.xml:
<web-app>
<servlet>
<servlet-name>ControllerServlet</servlet-name>
<servlet-class>org.guidestar.servlet.main.ControllerServlet</servlet-class>
<init-param>
<param-name>ControllerCore</param-name>
<param-value>FinController</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>ControllerServletWGA</servlet-name>
<servlet-class>org.guidestar.servlet.main.ControllerServlet</servlet-class>
<init-param>
<param-name>ControllerCore</param-name>
<param-value>WGAController</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>ControllerServletFlexiSearch</servlet-name>
<servlet-class>org.guidestar.servlet.main.ControllerServlet</servlet-class>
<init-param>
<param-name>ControllerCore</param-name>
<param-value>FlexiSearchController</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ControllerServlet</servlet-name>
<url-pattern>*.gs</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ControllerServletWGA</servlet-name>
<url-pattern>*.wga</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ControllerServletFlexiSearch</servlet-name>
<url-pattern>*.flexi</url-pattern>
</servlet-mapping>
</web-app>
As you can see, each subclass of ControllerCore shares the same servlet code but uses a different extension. Calls to the servlent take the form of: http://www.guidestar.org/controller/search.gs?action_searchFin=1&ein=54-1774039