In our company, Globant, we use DDD. Also we have a template that holds DDD, Contract First, TDD.
You can find information related to this template at: http://katari.globant.com
The idea of DDD is having a rich domain, on top of that an application layer (here is the place where you bound the information that was sent by the client).
The flow should be something like this.
Client -> HTTP-Method
Spring Dispatcher Servlet ->
Controller -> Application Layer (Here we bound the request parameters)
Application Layer -> Performs operations with the domain (change something, persist etc) (Also here we delimit the transactions)
The application layer send a response to the Controller, and the controller dispatch to the view with the result of the application layer.
for the application layer, we have something called "Command<T>" that contains a method "T execute();"
within the command, you have the complete action... also you can re-use those commands, and only one controller for many commands.