JSP (Jakarta Server Pages)はサーブレットと同様に Java のプログラムをサーバ(サーブレットコンテナ)上で動作させる仕組みなのですが、サーブレットとは異なり、PHPの様なスクリプトファイル(JSPファイル)をコンパイルしないで直接サーバにデプロイします。
その後ユーザーがブラウザやアプリなどでデプロイ先にアクセスするとスクリプトファイルがサーバー上でコンパイル&実行され、実行結果がユーザーに送り返されます。

下のソース1はJSPの例で、前ページのサーブレットの例と全く同じ動作をします。
サーブレットは Java のソースコード形式になっていましたが、JSP の場合は HTML の中に Java のソース(<% 〜 %>の部分)が埋め込まれいることが分かります。
また上にも書きましたが、JSPの場合はコンパイルしないで JSP ファイルを直接デプロイします。

サーブレットと違って非常にすっきりしたソースになるので可読性は向上します。
ただし実行する前にコンパイル作業が必要になるのでサーバーの負荷は増えます。

ソース1: JSPの例
<%@ page contentType="text/html; charset=UTF-8" %>
<%
  String name = request.getParameter("name");
%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<style>
body{
background: #ffff00;
}
</style>
<title>タイトル</title>
</head>
<body>
<%
  if( name == null ) out.println("<p>name がセットされていません</p>");
  else out.println("<p>name は「"+name+"」です</p>");
%>
</body>
</html>