Where should we use servlet technology? Where should we use JSP technology? Why do we need a servlet when JSP technology exists? What is the difference between servlets and JSP?
Servlets are components which run inside of a container and handle server requests (typically HTTP) in a request/response manner. JSPs are template pages that can be comprised of Java code and markup (HTML) code. A JSP is ultimately interpreted, converted to a servlet, compiled, and executed. With this in mind, you can technically get by using just JSPs; however, this practice is strongly discouraged, since it can lead to a very tightly-coupled and convoluted mess.
Best practices suggest using servlets as front controllers for incoming HTTP requests and JSPs as formatting templates for dynamic markup of HTTP responses. This leads to a much cleaner design following instep with the model-view-controller pattern.