The flash scope is a scope which lives during the redirected request only. This is particularly useful if you want to prepare a request scoped object in the server side before redirecting. The object is then available in the redirected request.
The flash scope is originally a Ruby on Rails invention. It's later been taken over in several other modern web based MVC frameworks like JSF2, Play!, etcetera.
The flash scope is backed by a short living cookie which is associated with a data entry in the session scope. Before the redirect, a cookie will be set on the HTTP response with a value which is uniquely associated with the data entry in the session scope. After the redirect, the presence of the flash scope cookie will be checked and the data entry associated with the cookie will be removed from the session scope and be put in the request scope of the redirected request. Finally the cookie will be removed from the HTTP response. This way the redirected request has access to request scoped data which was been prepared in the initial request.
The flash scope is often used for messaging purposes in case of form submits following the Post-Redirect-GET pattern. As a redirect basically instructs the browser to create a brand new HTTP request, it would not be possible to use the request scope to pass request based data from the controller to the view. The flash scope solves exactly this problem.