My CS degree from University of Washington was based on Java. These are all recommendations from working through that degree.
To learn the basics of Java I highly recommend Sun's books online. They are as well written as most things out there and I never found a need to use much else. The class library for Java is also much more straight forward and enlightening that anything Microsoft makes.
Before I got itno the online resoursces, I actually referenced a lot of C# primer plus as the two languages are so similar.
For Servlets and JSP I really like Murach's Java Servlets and JSP. Its a good basic intro and it will have a lot that you already know. However, its one of the best written books I've read and gets right to the point rather than filling pages with bloat. I'm really a big fan of Murach's books... they come out at a slower pace but have a lot more quality control than other series.
For development I highly recommend either starting with Dr. Java or getting Eclipse and downloading the Dr. Java plugin. TextPad is also a good backup compiler to use. On one hand, Dr. Java is very simple and easy to use but has some bugs, but Eclipse is a big IDE to get into at first and start loading plugins can be confusing if you're not use to it. However, either way Dr. Java is an incredible learning resource. It allows you to play with Java in real time, so if you make an object, you can go into the Dr. Java interactions window and make an instance of your object and call its methods to see how it works all without making a wrapper class to test it. You can also play with core Java code too. So you can go in and type something like:
int x = 8*2;
x;
and it will print out the value of x for you. All done without compiling or even having a file open. Its really nice to use to get use to how arrays and various other data structures work in Java.
I also like some of the Java Data Structures and Algorithm textbooks just because those are good ways to see how the basics of the language work.
However, I have always found for things like Swing, JOGL (openGL in Java), multithreaded programing or multiprocessor programming, etc I just prefer to use the resources online on Sun's site or through a google search. So many universities use Java now that you will get lots of .edu sites with really good tutorials.
I can't stress how good of a resource Dr. Java is though.