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 Servlet 2.2 container that does not support Servlet filters.
In particular, the main intent of this controller is to allow for applying
Spring's OpenSessionInViewInterceptor or OpenPersistenceManagerInViewInterceptor
to servlets in a Servlet 2.2 container. The specified "servlet-name" will
simply refer to a custom servlet definition in web.xml in such a scenario.
You then need to map "/myservlet" (or whatever path you choose for your servlet)
onto this controller, which will in turn forward to your servlet.
In a Servlet 2.3 container, when not using Spring's own web MVC framework,
it is recommended to use classic servlet mapping in combination with a filter,
for example Spring's OpenSessionInViewFilter or OpenPersistenceManagerInViewFilter.
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>
author: Juergen Hoeller since: 1.1.1 See Also: ServletWrappingController See Also: org.springframework.orm.hibernate.support.OpenSessionInViewInterceptor See Also: org.springframework.orm.hibernate.support.OpenSessionInViewFilter See Also: org.springframework.orm.jdo.support.OpenPersistenceManagerInViewInterceptor See Also: org.springframework.orm.jdo.support.OpenPersistenceManagerInViewFilter |