Let me answer the first two questions. As for the first one, wicket is a component-based framework (more like JSF and tapestry) while struts is request based. To make this more clear, traditional request-based MVC frameworks (like struts), the controller works in the terms of whole requests and whole pages. It is also responsible for pulling the data out of the model to populate the view. In the case of wicket, the wicket components more resemble the stateful self contained widgets (like the ones in swing GUI). The components use listener delegates to listen to GET and POST requests the same way swing components listen to events (clicks and key strokes)
As for your second question, IMHO, web frameworks are best for the web, and that's it. Most enterprise applications nowadays have a web presentation layer, but a good design mandates that your enterprise business logic should be separated in POJOs so that if you need to change wor presentation layer, database layer or integration layer (the one that integrates your application with other backend systems), you will not be in a large mess.