Question:
What is the difference between servlets and Java Server Pages? Which is preferred?
Answer:
Servlets and Java Server Pages are complementary APIs, both providing
a means for generating dynamic Web content. A servlet is a Java
class implementing the javax.servlet.Servlet interface that runs
within a Web or application server's servlet engine, servicing client
requests forwarded to it through the server. A Java Server Page is a
slightly more complicated beast. JSP pages contain a mixture of HTML,
Java scripts (not to be confused with JavaScript), JSP elements,
and JSP directives. The elements in a Java Server Page will generally
be compiled by the JSP engine into a servlet, but the JSP specification
only requires that the JSP page execution entity follow the Servlet
Protocol.
The advantage of Java Server Pages is that they are
document-centric. Servlets, on the other hand, look and act like
programs. A Java Server Page can contain Java program fragments that
instantiate and execute Java classes, but these occur inside an HTML
template file and are primarily used to generate dynamic content.
Some of the JSP functionality can be achieved on the client, using
JavaScript. The power of JSP is that it is server-based and provides
a framework for Web application development. Rather than choosing
between servlets and Java Server Pages, you will find that most
non-trivial applications will want to use a combination of JSP and
servlets. In fact, the JSP 1.1 and Servlet 2.2 specifications are
based around the concept of the Web application, combining the two
APIs into a unified framework.