1.1 JSP の概要
サーブレットを作成するには、命令型と宣言型の2 つの一般的な方法があります。最初のものについてはすでに説明しました。これは実際にはサーブレットです。2 つ目は JSP (Java Server Pages) と呼ばれるもので、ここで詳しく説明します。
サーブレット JSP の例:
<html>
<body>
<% out.print(2*5); %>
</body>
</html>
私たちが慣れ親しんでいる古典的なサーブレットとはあまり似ていませんね。これは本当です。JSP は、Java コードが挿入された HTML ページです (緑色で強調表示されています)。
ご存知のとおり、サーブレットに大量の Java コードがあり、HTML コードが少ない場合は、従来のサーブレットを使用するほうが快適です。しかし、サーバーによって数行しか変更されない大きな HTML ページが必要な場合はどうすればよいでしょうか?
この場合、最も簡単なのは、この HTML ページを作成し、その中でサーバー上の Java コードを何らかの方法で実行することです。
1.2 JSPのコンパイル
別の例を見てみましょう。
<html>
<body>
<%
double num = Math.random();
if (num > 0.95) {
%>
<h2>You are lucky, user!</h2><p>(<%= num %>)</p>
<%
}
%>
</body>
</html>
乱数を取得し、それが 0.95 より大きい場合は、「幸運です、ユーザー!」というテキストを出力します。
ここでは Java コードが青で強調表示されています。通常 (強調表示されていない) - HTML コード、および赤色 - サービス タグ。Java コードがどこにあるか、HTML がどこにあるかを理解するのに役立ちます。
何かおかしいことに気づきましたか?閉じ中括弧は"}"
別の にあります"code block"
。このようなコードを記述する正しい方法は何でしょうか? それはどのように機能するのでしょうか?
答えはとても簡単です:)
Web サーバーは、JSP ファイルを見つけた後、それをクラシック サーブレットにコンパイルします。上記の JSP ページに基づいて、このサーブレットが生成されます。
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
out.print("<html> ");
out.print("<body>");
double num = Math.random();
if (num > 0.95) {
out.print("<h2>You're lucky user! </h2><p>(" + num + ")</p>");
}
out.print("</body>");
out.print("</html>");
}
}
Web コンテナはサーブレット コードを生成したところです。HTML はテキストに変わり、挿入された Java コードは通常の Java コードになりました。
GO TO FULL VERSION