JSP is a simple system where page declarations are compiled to produce servlets. It allows you to define how a web page will look using display tags while still giving a mechanism for creating the page display logic.
JSF is much more complicated. It frequently uses JSP as display option, but JSF separates the logic (Model/Controller) and display (View) more rigorously. The JSF controllers connect to a plug-replaceable render kit, which is usually, though not always, one that generates JSP output.
Swing is based on a true MVC architecture. Nothing that travels over HTTP can implement true MVC, because part of MVC is that when the Model changes, those changes have to be pushed out to the View and HTTP cannot push data, only respond to requests to pull data. So the architecture of a web application is quite a bit different from the architecture of a Swing or AWT application.
Thanks to AJAX, it's now possible to better simulate the immediacy that desktop apps are known for, but there are limits to how far you can go. The only way around that would be to do true client-server, and that means no HTTP and thus it wouldn't operate in a standard web browser.
An IDE is no substitute for an Intelligent Developer.