Struts1 and Struts2 are completely different and therefore the code won't work just upgrading the Struts2 version: there are differences at all level from configuration, threading model, JSP tags and Actions classes.
You can read here
Our strategy when we migrated a significantly large (legacy) application followed those guidelines:
- include Struts2 jar files and configuration files: they can happily co-exist with Struts1
- create new screens with Struts2: define a new namespace so URLs are different and there is no collision (it also helps for debugging)
- rewrite incrementally the application: move one screen at the time creating a new Struts2 action handler and new JSPs
We have used Spring for the new Struts2 implementation (again they all co-exist in the same WAR) since the integration is smooth.
We have been also able to re-use part of the service layer (business logic and DAO): the service code was refactored to be Spring-managed and injected in the Struts2 Action classes.