anchor.diff:  [[webflux-web-handler-api]]
   === `WebHandler` API
   
  -The WebHandler API is a general-purpose server web API for processing requests through a
  -chain of {api-spring-framework}/web/server/WebExceptionHandler.html[`WebExceptionHandler`] and
  -{api-spring-framework}/web/server/WebFilter.html[`WebFilter`] components and a target
  -{api-spring-framework}/web/server/WebHandler.html[`WebHandler`] component. You can assemble the chain
  -with `WebHttpHandlerBuilder` either by adding components to the builder or by having them
  -detected from a Spring `ApplicationContext`. The builder returns an
  -<<webflux-httphandler>> that you can then use to run on any of the supported servers.
  -
  -While `HttpHandler` aims to be the most minimal contract across HTTP servers, the
  -`WebHandler` API provides essential features commonly used to build web applications.
  -For example, the `ServerWebExchange` available to WebHandler API components provides
  -access not only to the request and response, but also to request and session attributes,
  -access to parsed form data, multipart data, and more.
  -
  +The `org.springframework.web.server` package builds on the <<webflux-httphandler>> contract
  +to provide a general-purpose web API for processing requests through a chain of multiple
  +{api-spring-framework}/web/server/WebExceptionHandler.html[`WebExceptionHandler`], multiple
  +{api-spring-framework}/web/server/WebFilter.html[`WebFilter`], and a single
  +{api-spring-framework}/web/server/WebHandler.html[`WebHandler`] component. The chain can
  +be put together with `WebHttpHandlerBuilder` by simply pointing to a Spring
  +`ApplicationContext` where components are
  +<<webflux-web-handler-api-special-beans,auto-detected>>, and/or by registering components
  +with the builder.
  +
  +While `HttpHandler` has a simple goal to abstract the use of different HTTP servers, the
  +`WebHandler` API aims to provide a broader set of features commonly used in web applications
  +such as:
  +
  +* User session with attributes.
  +* Request attributes.
  +* Resolved `Locale` or `Principal` for the request.
  +* Access to parsed and cached form data.
  +* Abstractions for multipart data.
  +* and more..
   
   [[webflux-web-handler-api-special-beans]]
   ==== Special bean types
   
  -The table below lists the components that `WebHttpHandlerBuilder` detects:
  +The table below lists the components that `WebHttpHandlerBuilder` can auto-detect in a
  +Spring ApplicationContext, or that can be registered directly with it:
   
   [cols="2,2,1,3", options="header"]
   |===
  
positive.code: [[webflux-reactive-spring-web]]
  == Reactive Core
  
  The `spring-web` module contains abstractions and infrastructure to build reactive web
  applications. For server-side processing, this is organized in two distinct levels:
  
  * <<webflux-httphandler,HttpHandler>>: Basic, common API for HTTP request handling with
  non-blocking I/O and (Reactive Streams) back pressure, along with adapters for each
  supported server.
  * <<webflux-web-handler-api>>: Slightly higher level but still general-purpose API for
  server request handling, which underlies higher-level programming models, such as annotated
  controllers and functional endpoints.
  
  The reactive core also includes <<webflux-codecs>> for client and server side use.
  
  
  
  
negative.code: 		// ...
  	}
  ----
  <1> Using `@Valid` on a model attribute argument.
  ====
  
  Spring WebFlux, unlike Spring MVC, supports reactive types in the model -- for example,
  