The "classic" patterns book on design patterns is "Design Patterns: Elements of Reusable Object-Oriented Software" by the "gang of four" - I can't remember all their names but Google should help you.
I have this book and as a reference it is excellent. It's not a good first book on patterns - it's very dry and the language is quite abstract. It is quite expensive (for a student), though. Sample code is in C++ but the theory is fine and (I find) easily translatable into
Java.
J2EE-specific patterns are detailed in a few books by Sun and are available at
http://java.sun.com/blueprints/patterns/index.html (look at the 'patterns catalog'). Use of these pretty much assumes a reasonable degree of familiarity with the
J2EE architecture though.
As far as introductory texts go, I'm not sure where is good. I guess other people will know
--Tim
PS if you want to be really hardcore, you can start from the original source - design patterns in software are based on a similar concept in architecture. A book called "A Pattern Language" by Christopher Alexander is the seminal text here. Though that's more for interest - it won't be very practical for software architecture