It depends on the application, but I have used everything from no framework (printouts from servlets) through JSP/struts to velocity and tapestry. For very complex applications I would certainly recommend tapestry, despite the xml. For simpler stuff, probably JSP. I don't like struts, but some people swear by it.
This looks like a job for .... legal tender! It says so right in this tiny ad: