I will share some of my thoughts on this.
- As said above these frameworks are developed on top of Servlet/JSP.
- They are meant to avoid duplication of code (DRY).
- Framework are based on Design Patterns - general reusable solution for a commonly occurring problems.
- They help communicate the things easily across the team and make them productive and focused on the enterprise level problem they are trying to solve than these common tasks.
- They help in speeding up the development by providing general solution to commonly well known problems. (e.g. form validation, REST, testing, dependency injection etc.)
When you are developing large scale enterprise app and have multiple developers working on it, you definitely needs some uniformity across the project/code/structure each developer is writing. The enforcements forced externally are not reliable, but when those are in built it helps to make the project to be easy to maintain, scale and easy for new people to be productive with it within short time.
I believe this rule applies not just for servlet-jsp but for JavaScript as well. Just native JavaScript or even low level JavaScript API/Libraries are not enough when building an enterprise scale UI. Either adopt the Best available Framework or abstract out common nature and make it a framework (not library).