org.springframework.web.servlet.mvc

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:
    ServletWrappingController, OpenEntityManagerInViewInterceptor, OpenEntityManagerInViewFilter