JSPの基礎知識

JSPとは何ですか?

テンアートニ 中越智哉
2001/3/13

 JSPとは、JavaServer Pages の略で、Javaによるサーバサイド・スクリプティングを実現するためのテクノロジです。

 一言でいうと、HTMLの中にJavaのコードを埋め込んで実行させるための仕組みが、JSPだということになります。つまり、Javaの実行結果をHTMLとして出力させることができ、クライアントの要求に応じた動的なページを生成することが可能となるのです。HTML内にJavaを記述する、といえば、JavaScriptがよく知られていますが、これとJSPとの違いは何でしょうか?

 JavaScriptは、Javaと似た文法を用いて、HTMLの中にコードを記述して動的な処理を行わせることができるものです。Webアプリケーションにおいては、入力項目のチェックをしたり、送信パラメータを動的に書き換えたりするときに、JavaScriptがよく用いられています。JavaScriptは、Webサーバから転送されるHTMLファイルの中に記述されており、その実行は、クライアントであるWebブラウザ上で行われます。

 これに対して、JSPは、Serverという単語が含まれていることからも分かるとおり、クライアント(Webブラウザ)ではなく、Webサーバ側でJavaのコードが実行され、その実行結果が、HTMLとしてクライアントに転送されるようになっています。ですから、JavaScriptの場合、ブラウザ上で、「ソースを見る」などの機能で、HTMLソースを見ると、JavaScriptのコードを見ることができますが(リスト1)、JSPの場合、Webサーバ側でJavaのコードが処理され、その結果だけが送信されますから、ブラウザ上でHTMLソースを見ても、JSPのコードを見ることはできません(リスト2、リスト3)

<html>
<head>
<title>Javascript Source</title>
</head>
<body>
ただいまの時刻は、
<script language="javascript">
document.write(new Date());
</script>
です。
</body>
</html>
リスト1 JavaScriptでは、ブラウザ側にJavaScriptのコードが送信されてくる

<html>
<head>
<title>JSP Source</title>
</head>
<body>
ただいまの時刻は、
<%= new java.util.Date() %>
です。
</body>
</html>
リスト2  リスト1の内容をJSPで記述したコード

<html>
<head>
<title>JSP Source</title>
</head>
<body>
ただいまの時刻は、
Mon Feb 26 11:31:14 JST 2001
です。
</body>
</html>

リスト3 リスト2を実行するとブラウザにはJavaのコードは送信されず、このようなソースだけが送信される

 Webサーバ側でJavaを実行し、その実行結果をHTMLとしてクライアントに送信することのできる仕組みとしてはJava Servletがすでにあるわけですが、実は、機能面だけを考えると、Java ServletでできることとJSPでできることには、ほとんど違いがありません(詳しい理由は「JSPの動作原理を教えてください」をご覧ください)。ただ、コーディングの形式はだいぶ異なっています。Servletの場合、通常のJavaクラスのコード内に、HTMLを記述するようなイメージになります(リスト4)

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class List4 extends HttpServlet {

  public void doGet(HttpServletRequest request,
   HttpServletResponse response)
   throws ServletException,IOException {

  PrintWriter out = response.getWriter();

  out.println("<html>");
  out.println("<head>");
  out.println("<title>Hello Servlet!</title>");
  out.println("</head>");
  out.println("<body>");
  out.println("<h1>Hello Servlet!</h1>");

  for(int i=1;i<=10;i++) {
    out.println("<p>["+i+"] : Hello Servlet!</p>");
  }

  out.println("</body>");
  out.println("</html>");
  out.close();
  }
}
リスト4  Servletで記述されたコード

JSPの場合は、HTMLの中にJavaの処理を記述していく

 一方、JSPの場合は、HTMLの中に、Javaの処理を記述していく形式をとっており、一見するとHTMLだが、よく見るとJavaのコードが含まれている、といったイメージになります(リスト5)。ですから、JSPのファイルは、Javaのクラスファイルではなく、HTMLと同じプレーンなテキストファイルです(JSPファイルの拡張子は、「.html」ではなく「.jsp」になります)。

<html>
<head>
<title>Hello! JSP!</title>
</head>
<body>

<h1>Hello! JSP!</h1>

<% for(int i=1;i<=10;i++) { %>

<p>[ <%= i %> ] : Hello! JSP!</p>


<% } %>

</body>
</html>
リスト5 リスト4をJSPで記述するとこうなる



「Java Solution FAQ」



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間