Package org.springframework.web.servlet

# Interface View

All Known Subinterfaces:
  `FragmentsRendering`, `SmartView`

All Known Implementing Classes:
  `AbstractAtomFeedView`, `AbstractFeedView`, `AbstractJackson2View`, `AbstractPdfStamperView`, `AbstractPdfView`, `AbstractRssFeedView`, `AbstractTemplateView`, `AbstractUrlBasedView`, `AbstractView`, `AbstractXlsView`, `AbstractXlsxStreamingView`, `AbstractXlsxView`, `FreeMarkerView`, `GroovyMarkupView`, `InternalResourceView`, `JstlView`, `MappingJackson2JsonView`, `MappingJackson2XmlView`, `MarshallingView`, `RedirectView`, `ScriptTemplateView`, `XsltView`

public interface View
MVC View for a web interaction. Implementations are responsible for rendering content, and exposing the model. A single view exposes multiple model attributes.

This class and the MVC approach associated with it is discussed in Chapter 12 of Expert One-On-One J2EE Design and Development by Rod Johnson (Wrox, 2002).

View implementations may differ widely. An obvious implementation would be JSP-based. Other implementations might be XSLT-based, or use an HTML generation library. This interface is designed to avoid restricting the range of possible implementations.

Views should be beans. They are likely to be instantiated as beans by a ViewResolver. As this interface is stateless, view implementations should be thread-safe.

Author:
  Rod Johnson, Arjen Poutsma, Rossen Stoyanchev
See Also:
  - `AbstractView`
  - `InternalResourceView`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`PATH_VARIABLES`
Name of the `HttpServletRequest` attribute that contains a Map with path variables.
`static final String`
`RESPONSE_STATUS_ATTRIBUTE`
Name of the `HttpServletRequest` attribute that contains the response status code.
`static final String`
`SELECTED_CONTENT_TYPE`
The `MediaType` selected during content negotiation, which may be more specific than the one the View is configured with.

## Method Summary

Modifier and Type
Method
Description
`default String`
`getContentType()`
Return the content type of the view, if predetermined.
`void`
`render(Map<String,?> model, HttpServletRequest request, HttpServletResponse response)`
Render the view given the specified model.

## Field Details

### RESPONSE_STATUS_ATTRIBUTE

static final String RESPONSE_STATUS_ATTRIBUTE
Name of the `HttpServletRequest` attribute that contains the response status code.

Note: This attribute is not required to be supported by all View implementations.

Since:
  3.0

### PATH_VARIABLES

static final String PATH_VARIABLES
Name of the `HttpServletRequest` attribute that contains a Map with path variables. The map consists of String-based URI template variable names as keys and their corresponding Object-based values -- extracted from segments of the URL and type converted.

Note: This attribute is not required to be supported by all View implementations.

Since:
  3.1

### SELECTED_CONTENT_TYPE

static final String SELECTED_CONTENT_TYPE
The `MediaType` selected during content negotiation, which may be more specific than the one the View is configured with. For example: "application/vnd.example-v1+xml" vs "application/*+xml".

Since:
  3.2

## Method Details

### getContentType

@Nullable default String getContentType()
Return the content type of the view, if predetermined.

Can be used to check the view's content type upfront, i.e. before an actual rendering attempt.

Returns:
  the content type String (optionally including a character set), or `null` if not predetermined

### render

void render(@Nullable Map<String,?> model, HttpServletRequest request, HttpServletResponse response) throws Exception
Render the view given the specified model.

The first step will be preparing the request: In the JSP case, this would mean setting model objects as request attributes. The second step will be the actual rendering of the view, for example including the JSP via a RequestDispatcher.

Parameters:
  `model` - a Map with name Strings as keys and corresponding model objects as values (Map can also be `null` in case of empty model)
  `request` - current HTTP request
  `response` - he HTTP response we are building
Throws:
  `Exception` - if rendering failed