If you haven't spent some time learning
Java, do that first.
A Google search on "Java Tutorial" will bring up plenty.
Get a firm grasp on packages, and the concept of a CLASSPATH for class loading.
After that, learn servlets.
You should start with servlets because they are the most obvious.
Like a piano, they're laid out plain and simple. Pay close attention to how they're threaded and why you should avoid instance variables until you know exactly what you're doing with them.
Once you have a basic understanding of servlets, you are ready to learn JSP.
JSPs get compiled into servlets. They abstract the servlet concepts so that a web designer can work with them without understanding anything about servlets. For a web designer, this is good. For a programmer who doesn't understand servlets, this is like stomping around in deep leaves, you never really know what you're stepping in until it's too late. Once you understand how JSPs abstract servlet concepts, they are a very convenient and powerfull way for you to quickly update the view of your app without mucking in the business logic.
I like "Core Servlets and Java Server Pages" by Marty Hall.
It teaches things in the right order.
It's available for free online:
http://pdf.coreservlets.com. The free version "first edition" is a little dated but still good.
If you can afford it, pick up the second edition and save yourself some headaches getting the examples to run.