Java Server Pages (JSP) are a complementary Java API to Java Servlets. They let you publish dynamic Web content. A JSP can contain HTML tags, scripts written in Java code, JSP elements that get compiled by a JSP engine, and JSP-specific directives. JSPs are document-centric, in contrast to servlets that are, or behave like, programs. You can embed Java code in JSPs, and use that code to instantiate and run Java classes.
JSP is server-based, providing a framework for Web development. JSPs are not competitors to Servlets. In fact, JSPs are extension to Java Servlet API. Both JSP and Servlets can make up a richer, more versatile, and unified framework for serious Web development. By having you servlets deal with the grunt work and logic of you applications, and having JSPs deal with layout and presentation of Web pages, you can achieve a fine separation between presentation format and underlying logic behind dynamic content, and thus, more maintainable Web applications.
For more information about JSP: http://java.sun.com/products/jsp/
For a Developer's guide on JSP:
For a JSP Syntax Card in PDF format: