I'll attempt to explain it in a very non-technical way (perhaps Merrill could add anything I miss).
Struts controls a web application (website). It helps you handle the following: The flow of the site and all of the form submittals, links, etc. The validation of the forms (field is required, must have 6 characters, etc). The internationalization of the app (displaying different translations based on locale). Creating servlets to display dynamic images, pdf's, and anything else you can think of. Using tiles guarantees consistency between pages (among other things). It is extremely extensible. Uses an MVC architecture (important if you want to move away from struts in the future).
Like I said, this is very non-technical, which means it isn't technically correct (if that even makes sense). Anyhow, some people may complain that it is not the most light-weight framework. Another complaint is that for small, static websites, it isn't worth the time to set up struts.
To me, the important part is that it follows a MVC architecture. That way, you can separate the business logic from everything else and you can change with the times.