In one sentense, struts force you to do web programming in a more disciplined way.
I made enhancement to struts for easier DB application programming, I call i TopStruts, here is a Preface of a doc, it tell you why I do it. Also I enclosed a sample doc .
I strongly recommend you take few days to study struts first before bury your head into this documentation. Understanding Struts will make you be more appreciated with the features here. Struts is very powerful, clean, flexible, but how about use it to build a Data process oriented application? You are going to pull your hair out of the head. That’s the struggle I had and I have seen many frustration posts on Struts developer forums.
Struts was chosen because I was too helpless to build or maintain any proprietary thing by myself, TopStruts was born because I need a easy way to build a straight forward presentation layer for data entry applications. I don’t want to manually create a mapping ValueObject or javabean for each table at back end; I don’t want to repeat the code or Action class declaration again and again for basic browsing functions(first/last/prev/next/insert/update/delete etc); I don’t think people should make a big deal out of Master-detail pattern and spend a big chapter in his Struts book to talk about its implementation, dependent transition should be given by the framework; also, I try to avoid modifying the application flow control code due to last minute security policy establishment. Compare to Struts, I just add few little things, but to me it’s essential.