Sounds like you are looking for a build tool like Maven, Hudson, Ant etc. I have experience with the former, and it can indeed solve the deployment problem via its various plugins, such as Cargo or JBoss.
Update
When you change even a single class, you may be tempted to do a patch by uploading only that single class file to the server. IMO that is a bad idea. The tools to (re)deploy your web app in an automated, reliable, repeatable way are there - you are better off using them rather than doing the job by hand or trying to reinvent the wheel. Trying to upload only the changed files is trading your own precious time for some network bandwidth - a very bad deal by itself. But if I add the risk of breaking the consistency of your app, it is even worse.
As a developer, while fixing a bug, if I change a class, I need to transfer the class and probably restart the webserver. I need to do this for ever small change I need to test.
In our project (a legacy app containing about 4000 classes), this exact process is working like a charm, fully automated.
In the development phase, I try to write unit tests first to verify that my code change works (since its legacy code, unit testing is not always possible, but most of the time still). Then I build the web app with Maven and it is automatically deployed to the JBoss server on my local machine, so that I can test the change.
Once I am happy to commit the change, an automated build is run by a Bamboo agent, which runs all our unit tests and also stops our Continuous Integration server instance, redeploys the freshly built EAR file, then restarts the server. Afterwards, some integration/smoke tests are run in another, dependent build. Both builds send an email report to the whole team.
Took some time to get here, but it works now :-)