Class Overview
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>
Summary
Public Methods |
void
|
setBeanName(String name)
Set the name of the bean in the bean factory that created this bean.
|
void
|
setServletName(String servletName)
Set the name of the servlet to forward to,
i.e.
|
Protected Methods |
ModelAndView
|
handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
Template method.
|
boolean
|
useInclude(HttpServletRequest request, HttpServletResponse response)
Determine whether to use RequestDispatcher's include or
forward method.
|
[Expand]
Inherited Methods |
From class
org.springframework.web.servlet.mvc.AbstractController
ModelAndView
|
handleRequest(HttpServletRequest request, HttpServletResponse response)
Process the request and return a ModelAndView object which the DispatcherServlet
will render.
|
abstract
ModelAndView
|
handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
Template method.
|
final
boolean
|
isSynchronizeOnSession()
Return whether controller execution should be synchronized on the session.
|
final
void
|
setSynchronizeOnSession(boolean synchronizeOnSession)
Set if controller execution should be synchronized on the session,
to serialize parallel invocations from the same client.
|
|
From class
org.springframework.web.servlet.support.WebContentGenerator
final
void
|
applyCacheSeconds(HttpServletResponse response, int seconds, boolean mustRevalidate)
Apply the given cache seconds and generate respective HTTP headers.
|
final
void
|
applyCacheSeconds(HttpServletResponse response, int seconds)
Apply the given cache seconds and generate corresponding HTTP headers,
i.e.
|
final
void
|
cacheForSeconds(HttpServletResponse response, int seconds, boolean mustRevalidate)
Set HTTP headers to allow caching for the given number of seconds.
|
final
void
|
cacheForSeconds(HttpServletResponse response, int seconds)
Set HTTP headers to allow caching for the given number of seconds.
|
final
void
|
checkAndPrepare(HttpServletRequest request, HttpServletResponse response, int cacheSeconds, boolean lastModified)
Check and prepare the given request and response according to the settings
of this generator.
|
final
void
|
checkAndPrepare(HttpServletRequest request, HttpServletResponse response, boolean lastModified)
Check and prepare the given request and response according to the settings
of this generator.
|
final
int
|
getCacheSeconds()
Return the number of seconds that content is cached.
|
final
String[]
|
getSupportedMethods()
Return the HTTP methods that this content generator supports.
|
final
boolean
|
isRequireSession()
Return whether a session is required to handle requests.
|
final
boolean
|
isUseCacheControlHeader()
Return whether the HTTP 1.1 cache-control header is used.
|
final
boolean
|
isUseCacheControlNoStore()
Return whether the HTTP 1.1 cache-control header value "no-store" is used.
|
final
boolean
|
isUseExpiresHeader()
Return whether the HTTP 1.0 expires header is used.
|
final
void
|
preventCaching(HttpServletResponse response)
Prevent the response from being cached.
|
final
void
|
setCacheSeconds(int seconds)
Cache content for the given number of seconds.
|
final
void
|
setRequireSession(boolean requireSession)
Set whether a session should be required to handle requests.
|
final
void
|
setSupportedMethods(String[] methods)
Set the HTTP methods that this content generator should support.
|
final
void
|
setUseCacheControlHeader(boolean useCacheControlHeader)
Set whether to use the HTTP 1.1 cache-control header.
|
final
void
|
setUseCacheControlNoStore(boolean useCacheControlNoStore)
Set whether to use the HTTP 1.1 cache-control header value "no-store"
when preventing caching.
|
final
void
|
setUseExpiresHeader(boolean useExpiresHeader)
Set whether to use the HTTP 1.0 expires header.
|
|
From class
org.springframework.web.context.support.WebApplicationObjectSupport
|
From class
org.springframework.context.support.ApplicationObjectSupport
|
From class
java.lang.Object
Object
|
clone()
|
boolean
|
equals(Object arg0)
|
void
|
finalize()
|
final
Class<?>
|
getClass()
|
int
|
hashCode()
|
final
void
|
notify()
|
final
void
|
notifyAll()
|
String
|
toString()
|
final
void
|
wait()
|
final
void
|
wait(long arg0, int arg1)
|
final
void
|
wait(long arg0)
|
|
From interface
org.springframework.beans.factory.BeanNameAware
abstract
void
|
setBeanName(String name)
Set the name of the bean in the bean factory that created this bean.
|
|
From interface
org.springframework.context.ApplicationContextAware
|
From interface
org.springframework.web.context.ServletContextAware
abstract
void
|
setServletContext(ServletContext servletContext)
Set the ServletContext that this object runs in.
|
|
From interface
org.springframework.web.servlet.mvc.Controller
abstract
ModelAndView
|
handleRequest(HttpServletRequest request, HttpServletResponse response)
Process the request and return a ModelAndView object which the DispatcherServlet
will render.
|
|
Public Constructors
public
ServletForwardingController
()
Public Methods
public
void
setBeanName
(String name)
Set the name of the bean in the bean factory that created this bean.
Invoked after population of normal bean properties but before an
init callback such as afterPropertiesSet()
or a custom init-method.
Parameters
name
| the name of the bean in the factory.
Note that this name is the actual bean name used in the factory, which may
differ from the originally specified name: in particular for inner bean
names, the actual bean name might have been made unique through appending
"#..." suffixes. Use the BeanFactoryUtils#originalBeanName(String)
method to extract the original bean name (without suffix), if desired.
|
public
void
setServletName
(String servletName)
Set the name of the servlet to forward to,
i.e. the "servlet-name" of the target servlet in web.xml.
Default is the bean name of this controller.
Protected Methods
protected
ModelAndView
handleRequestInternal
(HttpServletRequest request, HttpServletResponse response)
Template method. Subclasses must implement this.
The contract is the same as for handleRequest
.
protected
boolean
useInclude
(HttpServletRequest request, HttpServletResponse response)
Determine whether to use RequestDispatcher's include
or
forward
method.
Performs a check whether an include URI attribute is found in the request,
indicating an include request, and whether the response has already been committed.
In both cases, an include will be performed, as a forward is not possible anymore.
Parameters
request
| current HTTP request |
response
| current HTTP response |
Returns
true
for include, false
for forward