* It can become difficult to debug with the various .xml files that Struts relies on. If you have a setting out of wack, it's not very descriptive on how to fix it or what the issue is.
* Figuring out what all the .xml attributes and tags is another issue. Get a GUI plug-in for Eclipse or whatever IDE you use. They are very useful when learning the Struts ropes or setting up something such as Validator.
1- You take a small performance hit, but hardly noticable. Depends on how much you want to harp on this, but the web server is going to do it's thing regardless (map the URL to the ActionServlet), then STRUTS is going to map the same URL to it's Action class. Then the mapping to an ActionForm, reflective population of beans, lookup of ActionMappings and so on. Little things, but they may add up on very high traffic servers.
2- STURTS is very popular, today. What about tomorrow? Java Server Faces is on the horizon and has the potential to become the buzzword of choice. Who knows if the level of support for STRUTS today will be there tomorrow.
3- Action class parameters. I do not recall (correct me if I'm wrong) if an Action class can have parameters defined in struts-config.xml. In web.xml, a Servlet can have parameters which make it easy to modify settings.
4- Not THE standard. Currently, I do not believe there is a 'standard'. If in the future you have to hire a new developer, are they more likely to know STRUTS, the J2EE standard or some other framework that they where exposed to at their last job.
Early optimization is the root of all Evil (Donald Knuth--paraphrased). I've developed an ASP (application services provider) that used Struts. We used caching and other techniques to optimize the pages that got hit the most. Struts encourages MVC. My advice to the original poster, read the blueprint before you start using Struts or any framework. The key is understanding the J2EE blueprint and model 2.
Struts is embracing JSTL and JSF. My advice to the original poster, follow the developer list. There is a good article on IBM developerWorks that covers using Struts, JSF and Tiles on a project. Struts and JSF compliment each other nicely. There is some overlap.
You are wrong (you asked). You can pass a parameter to an Action. You can also create a custom config object that has any properties you like.
It is the defacto standard. Example, Tomcat console is built with Struts so is the IBM WebSphere console and the WebLogic console. Struts is the framework that is closest to the J2EE blueprint suggestions.