Die Programmierung von HTML-Seiten innerhalb von Java-Klassen bereitet Probleme. Zum Beispiel müssen HTML-Entwickler nunmehr auch
Kenntnisse in der Programmiersprache Java besitzen. Außerdem kann der HTML-Code nur kompliziert gewartet werden, weil er in
println-Anweisungen gekapselt ist und Java-Editoren zudem üblicherweise keine Unterstützung zur Programmierung von
HTML-Code wie z.B. Syntax-Highlighting bieten.
Die Servlet-Programmierung hat man wegen eines Paradigmen-Wechsels aufgegeben. Anstatt HTML-Code in einem Java-Programm einzubetten, entschied man sich eine Zeit lang für den umgekehrten Weg: Man baute den Java-Code in HTML-Code ein. Die dafür benötigte Java EE-Technologie hieß Java Server Pages (JSP) und wurde 2013 durch JSF abgelöst.
Mit JSP erzeugte HTML-Seiten hatten die Endung *.jsp. Aus technischem Blickwinkel sei angemerkt, dass JSP-Seiten vom
Servlet-Container zur Laufzeit in Servlets umgewandelt werden. Davon bekommt allerdings weder der Entwickler noch der Besucher der
Webseite etwas mit.
Um Java-Code in HTML einbetten zu können, wurden zwei spezielle Tags entwickelt. Einer der Tags dient der Auswertung kurzer
Java-Ausdrücke, mit denen zum Beispiel die Ergebnisse einfacher Berechnungen in den HTML-Code eingefügt werden können.

Sobald kompliziertere Java-Anweisungen eingebunden werden mussten, empfahl sich der Einsatz des zweiten Tags. Der darin enthaltene Code
wurde vom Servlet-Container in die doGet()- bzw. doPost()-Methode des zur Laufzeit erzeugten Servlets eingefügt
und ausgeführt. Aus diesem Grund konnte in diesen Tags auch auf die Attribute request und out zugegriffen
werden. Um das Prinzip besser zu verstehen, wird diese Technologie anhand eines "Hello World"-Beispiels gezeigt, das eine persönliche
Begrüßung anbietet. Hierzu wird ein Parameter aus der HTTP-Anfrage ausgelesen. Er kann durch einfache Modifikation der URL angegeben
werden.

Der Einsatz von JSP hat die Entwicklung dynamischer Webseiten deutlich vereinfacht. Der HTML-Code war deutlich besser zu warten und es musste keine komplette Servlet-Klasse programmiert werden, um eine Webseite umzusetzen.