类 InternalResourceView
- 直接已知子类:
JstlView
public class InternalResourceView extends AbstractUrlBasedView
Wrapper for a JSP or other resource within the same web application. Exposes model objects as request attributes and forwards the request to the specified resource URL using aRequestDispatcher
.A URL for this view is supposed to specify a resource within the web application, suitable for RequestDispatcher's
forward
orinclude
method.If operating within an already included request or within a response that has already been committed, this view will fall back to an include instead of a forward. This can be enforced by calling
response.flushBuffer()
(which will commit the response) before rendering the view.Typical usage with
InternalResourceViewResolver
looks as follows, from the perspective of the DispatcherServlet context definition:<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
Every view name returned from a handler will be translated to a JSP resource (for example: "myView" -> "/WEB-INF/jsp/myView.jsp"), using this view class by default.
字段概要
从类继承的字段 org.springframework.web.servlet.view.AbstractView
DEFAULT_CONTENT_TYPE
从类继承的字段 org.springframework.context.support.ApplicationObjectSupport
logger
从接口继承的字段 org.springframework.web.servlet.View
PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE, SELECTED_CONTENT_TYPE
构造器概要
构造器 构造器 说明 InternalResourceView()
Constructor for use as a bean.InternalResourceView(String url)
Create a new InternalResourceView with the given URL.InternalResourceView(String url, boolean alwaysInclude)
Create a new InternalResourceView with the given URL.
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 protected void
exposeHelpers(HttpServletRequest request)
Expose helpers unique to each rendering operation.protected RequestDispatcher
getRequestDispatcher(HttpServletRequest request, String path)
Obtain the RequestDispatcher to use for the forward/include.protected boolean
isContextRequired()
An ApplicationContext is not strictly required for InternalResourceView.protected String
prepareForRendering(HttpServletRequest request, HttpServletResponse response)
Prepare for rendering, and determine the request dispatcher path to forward to (or to include).protected void
renderMergedOutputModel(Map<String,Object> model, HttpServletRequest request, HttpServletResponse response)
Render the internal resource given the specified model.void
setAlwaysInclude(boolean alwaysInclude)
Specify whether to always include the view rather than forward to it.void
setPreventDispatchLoop(boolean preventDispatchLoop)
Set whether to explicitly prevent dispatching back to the current handler path.protected boolean
useInclude(HttpServletRequest request, HttpServletResponse response)
Determine whether to use RequestDispatcher'sinclude
orforward
method.从类继承的方法 org.springframework.web.servlet.view.AbstractUrlBasedView
afterPropertiesSet, checkResource, getUrl, isUrlRequired, setUrl, toString
从类继承的方法 org.springframework.web.servlet.view.AbstractView
addStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, generatesDownloadContent, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getRequestToExpose, getStaticAttributes, isExposePathVariables, prepareResponse, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposeContextBeansAsAttributes, setExposedContextBeanNames, setExposePathVariables, setRequestContextAttribute, setResponseContentType, writeToResponse
从类继承的方法 org.springframework.web.context.support.WebApplicationObjectSupport
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, setServletContext
从类继承的方法 org.springframework.context.support.ApplicationObjectSupport
getApplicationContext, getMessageSourceAccessor, initApplicationContext, requiredContextClass, setApplicationContext
构造器详细资料
InternalResourceView
public InternalResourceView()
Constructor for use as a bean.
InternalResourceView
public InternalResourceView(String url)
Create a new InternalResourceView with the given URL.- 参数:
url
- the URL to forward to- 另请参阅:
setAlwaysInclude(boolean)
InternalResourceView
public InternalResourceView(String url, boolean alwaysInclude)
Create a new InternalResourceView with the given URL.- 参数:
url
- the URL to forward toalwaysInclude
- whether to always include the view rather than forward to it
方法详细资料
setAlwaysInclude
public void setAlwaysInclude(boolean alwaysInclude)
Specify whether to always include the view rather than forward to it.Default is "false". Switch this flag on to enforce the use of a Servlet include, even if a forward would be possible.
setPreventDispatchLoop
public void setPreventDispatchLoop(boolean preventDispatchLoop)
Set whether to explicitly prevent dispatching back to the current handler path.Default is "false". Switch this to "true" for convention-based views where a dispatch back to the current handler path is a definitive error.
isContextRequired
protected boolean isContextRequired()
An ApplicationContext is not strictly required for InternalResourceView.- 覆盖:
isContextRequired
在类中WebApplicationObjectSupport
- 另请参阅:
ApplicationObjectSupport.getApplicationContext()
,ApplicationObjectSupport.getMessageSourceAccessor()
,WebApplicationObjectSupport.getWebApplicationContext()
,WebApplicationObjectSupport.getServletContext()
,WebApplicationObjectSupport.getTempDir()
renderMergedOutputModel
protected void renderMergedOutputModel(Map<String,Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception
Render the internal resource given the specified model. This includes setting the model as request attributes.- 指定者:
renderMergedOutputModel
在类中AbstractView
- 参数:
model
- combined output Map (nevernull
), with dynamic values taking precedence over static attributesrequest
- current HTTP requestresponse
- current HTTP response- 抛出:
Exception
- if rendering failed
exposeHelpers
protected void exposeHelpers(HttpServletRequest request) throws Exception
Expose helpers unique to each rendering operation. This is necessary so that different rendering operations can't overwrite each other's contexts etc.Called by
renderMergedOutputModel(Map, HttpServletRequest, HttpServletResponse)
. The default implementation is empty. This method can be overridden to add custom helpers as request attributes.- 参数:
request
- current HTTP request- 抛出:
Exception
- if there's a fatal error while we're adding attributes- 另请参阅:
renderMergedOutputModel(java.util.Map<java.lang.String, java.lang.Object>, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
,JstlView.exposeHelpers(javax.servlet.http.HttpServletRequest)
prepareForRendering
protected String prepareForRendering(HttpServletRequest request, HttpServletResponse response) throws Exception
Prepare for rendering, and determine the request dispatcher path to forward to (or to include).This implementation simply returns the configured URL. Subclasses can override this to determine a resource to render, typically interpreting the URL in a different manner.
- 参数:
request
- current HTTP requestresponse
- current HTTP response- 返回:
- the request dispatcher path to use
- 抛出:
Exception
- if preparations failed- 另请参阅:
AbstractUrlBasedView.getUrl()
getRequestDispatcher
protected RequestDispatcher getRequestDispatcher(HttpServletRequest request, String path)
Obtain the RequestDispatcher to use for the forward/include.The default implementation simply calls
ServletRequest.getRequestDispatcher(String)
. Can be overridden in subclasses.- 参数:
request
- current HTTP requestpath
- the target URL (as returned fromprepareForRendering(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
)- 返回:
- a corresponding RequestDispatcher
useInclude
protected boolean useInclude(HttpServletRequest request, HttpServletResponse response)
Determine whether to use RequestDispatcher'sinclude
orforward
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.
- 参数:
request
- current HTTP requestresponse
- current HTTP response- 返回:
true
for include,false
for forward- 另请参阅:
RequestDispatcher.forward(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
,RequestDispatcher.include(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
,ServletResponse.isCommitted()
,WebUtils.isIncludeRequest(javax.servlet.ServletRequest)