Expert Spring MVC and Web Flow

(Dana P.) #1

Functionality Overview


As you can see, the DispatcherServletprovides Spring MVC much more functionality than
Controllers and Views. The main theme here is pluggability, as each piece of functionality is
abstracted behind a convenient interface. We will visit each of these areas with more depth
later in this chapter, but for now let’s look at what Spring MVC is really capable of.

Locale Aware
Especially important with applications sensitive to internationalization (i18n) issues, Spring
MVC binds a Localeto all requests. Typically, the servlet container will set the Localeby look-
ing at HTTP headers sent by the client, but Spring MVC abstracts this process and allows for
the Localeto be retrieved and stored in arbitrary ways. By extending the LocaleResolver
interface, you can discover and set the Localefor each request based on your application’s
requirements. The Localeis then available during the entire request processing, including
view rendering.

■Tip See section 14.4 of the HTTP RFC for more on the Accept-Language header:http://www.w3.org/
Protocols/rfc2616/rfc2616-sec14.html#sec14.4.

Multipart File Uploads
A standard functionality requirement for all web application frameworks, file uploads (also
known as multipart requests) are handled in a pluggable manner. Spring MVC integrates
with the two well-known Java file upload libraries, Jason Hunter’s COS library (http://
http://www.servlets.com/cos, from his book Java Servlet Programming(O'Reilly, 2001)) and Jakarta
Commons’ FileUpload library (http://jakarta.apache.org/commons/fileupload). If neither of
these libraries covers your application’s needs, you may extend the MultipartResolverinter-
face to implement your custom file upload logic.

Request HandlerAdapters
While all the examples in this book will cover Controllers as the primary way to handle
incoming requests, Spring MVC provides an extension point to integrate any request handling
device. The HandlerAdapterinterface, an implementation of the adapter pattern, is provided
for third-party HTTP request handling framework integration.

■Tip Learn more about the adapter pattern, which adapts one system’s API to be compatible with
another’s, inside the book Design Patterns: Elements of Reusable Object-Oriented Design(Gamma, Helm,
Johnson, and Vlissides; Addison Wesley, 1995).

Mapping Requests to Controllers
The HandlerMappinginterface provides the abstraction for mapping requests to their handlers.
Spring MVC includes many implementations and can chain them together to create very

78 CHAPTER 5 ■THE PROCESSING PIPELINE

Free download pdf