I don't think there is a single answer to this question but here is mine.
For a simple project without strong modularity requirements, I would use a single project.
For the project layout itself, I follow the Maven standard directory layout. For a webapp, this typically means something like this:
.
└── src
├── main
│ ├── java - Application/Library sources
│ ├── resources - Application/Library resources
│ └── webapp - Web application sources
│ └── WEB-INF
└── test
├── java - Test sources
└── resources - Test resources
And I would use java packaging naming conventions to organize classes from the various layers:
com.acme.<app>.<module>.web.action for struts actions
com.acme.<app>.<module>.web.forms : for struts form beans
com.acme.<app>.<module>.service : for business services interfaces and implementations
com.acme.<app>.<module>.bo : for the business objects
com.acme.<app>.<module>.dao : for DAO interfaces
com.acme.<app>.<module>.dao.hib : for Hibernate implementations of the DAOs
But for a small application, I would just skip the functional <module> subdivision.
Related questions