Class ServletForwardingController

All Implemented Interfaces:
Aware, BeanNameAware, ApplicationContextAware, ServletContextAware, Controller

public class ServletForwardingController extends AbstractController implements BeanNameAware
Spring Controller implementation that forwards to a named servlet, i.e. the "servlet-name" in web.xml rather than a URL path mapping. A target servlet doesn't even need a "servlet-mapping" in web.xml in the first place: A "servlet" declaration is sufficient.

Useful to invoke an existing servlet via Spring's dispatching infrastructure, for example to apply Spring HandlerInterceptors to its requests. This will work even in a minimal Servlet container that does not support Servlet filters.

Example: web.xml, mapping all "/myservlet" requests to a Spring dispatcher. Also defines a custom "myServlet", but without servlet mapping.

 <servlet>
   <servlet-name>myServlet</servlet-name>
   <servlet-class>mypackage.TestServlet</servlet-class>
 </servlet>

 <servlet>
   <servlet-name>myDispatcher</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 </servlet>

 <servlet-mapping>
   <servlet-name>myDispatcher</servlet-name>
   <url-pattern>/myservlet</url-pattern>
 </servlet-mapping>
Example: myDispatcher-servlet.xml, in turn forwarding "/myservlet" to your servlet (identified by servlet name). All such requests will go through the configured HandlerInterceptor chain (e.g. an OpenSessionInViewInterceptor). From the servlet point of view, everything will work as usual.
 <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
   <property name="interceptors">
     <list>
       <ref bean="openSessionInViewInterceptor"/>
     </list>
   </property>
   <property name="mappings">
     <props>
       <prop key="/myservlet">myServletForwardingController</prop>
     </props>
   </property>
 </bean>

 <bean id="myServletForwardingController" class="org.springframework.web.servlet.mvc.ServletForwardingController">
   <property name="servletName"><value>myServlet</value></property>
 </bean>
Since:
1.1.1
Author:
Juergen Hoeller
See Also: