That's the "3-tier" webapp architecture. The 3 tiers are (IIRC), presentation, business logic and persistence. There's also a 2-tier model where an ActiveX control (or more rarely a java
applet) in the client talks directly to the backend database. 2-tier apps are how the SQL Slammer managed to wreak such havoc on the Internet several years back.
3-tier architecture is different from Model/View/Controller (MVC). MVC predates the Internet and was a hallmark of programming in the Smalltalk language. Its separation of concerns made it easier to design and implement complex GUI applications
JSF is one of the purest implementations of MVC that you can find for web use. It's not "full" MVC because no webapp on any platform or in any language can asynchronously post updates to the View when the Model changes - instead they get done as part of the next client request/response cycle. However, it's close enough, especially with help from AJAX.
I actually tend to have a lot more than 3 tiers these days.
On the client side, there's the HTML and JavaScript (client-side logic).
On the server side, I have, starting from the outer tier:
1. JSF at the (including extensions, such as PrettyFaces and RichFaces)
2. View templates and Backing Beans (the Model)
3. Business logic (for very simple logic, this may be part of the action processors in the backing beans).
4. Persistent Business Logic. A lot of my apps work with sets of interrelated ORM data sets that need to be manipulated within a single database transaction. They go here.
5. Simple Persistence. These are the DAOs, which access only a single table. They are invoked from the persistent business logic and may contain "finder" methods. In other words, the actual database queries are done here, as are the fetches and updates of the anchor tables for Tier-4 operations.
6. Object Relational Model. These are the Entity Beans.
7. Persistence mechanism. The low-level driver classes for persistence. Usually I'm using JPA and Spring, and Spring manufactures these and plugs them into the DAOs.
Although that's a lot of layers, each layer is fairly simple and has limited Concerns, which are kept Separated, so yes, that's SoC in action. I could do with fewer and sometimes do, but I prefer that all database-related operations be done at Tier 4 and lower so that Tier 3 and up are working with detached data objects. A lot of people don't do this, but I personally feel its safer and cleaner, one you get used to the extra gate-keeping.