![](/fjava/javafaq/index/javafaq_gra1.jpg) |
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で記述されたコード |
![](/fjava/javafaq/jsp/jsp-1.gif) |
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で記述するとこうなる |