JSPとは
JSPはJavaServerPagesの略で,動的なWebページを生成するために使用されるものである.JSPはMVCモデルにおけるViewの役割をになっており,Javaコードを埋め込むことができる.
JSPの利点
JSPファイルは,JSPコンテナによって対応するサーブレットクラスに変換される.
基本的にJSPはサーブレットとともに実装され,サーブレットの代わりにViewを実装することが役割となる.
ServletでViewを実装するパターン
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
response.setContentType("text/html;charset=Shift_JIS");
PrintWriter out=response.getWriter();
out.println("<html><head>");
out.println("<title>Hello, World!!</title>");
out.println("</head><body>");
out.println("<p>Hello,World!!</p>");
out.println("</body></html>");
}
}
ServletでもViewを実装することも可能で,JSPを利用しない場合はout.println()
を利用してHTML文書を出力する.
この場合,Javaのコードの中にHTMLを書くことになり,printの量が多くなってしまう.
JSPでViewを実装するパターン
<html>
<head>
<title>Hello, World!!</title>
</head>
<body>
<% out.println("<p>Hello,World!!</p>"); %>
</body>
</html>
一方,JSPはHTMLによく似た構造である.HTMLの中にJavaのコードを書くことができ,ビューを作成するのに適している.
このようにサーブレットがViewの実装が不向きという弱点をJSPで補うことができる.
JSPの記述方法
基本的にはHTMLで,中に以下のような記述方法でJavaのコードを組み込む.
1. スクリプトレット
<%
// ここにJavaコードを記述
String message = "Hello, World!";
out.println(message);
%>
<% %>
でJavaコードを囲むことで,埋め込むことができる.
htmlを出力しても<% %>
で囲んだ部分は表示されない.
2. スクリプト式
<%= message %>
<%= %>
で,変数や式を記述する.この変数や式の結果がHTMLに挿入される.
Javaのコードに「;」(セミコロン)は不要
3. スクリプト宣言
<%!
private String greeting = "Hello, World!";
public String getGreeting() {
return greeting;
}
%>
<%! %>
で囲むことで,JSP内でクラス変数やメソッドの宣言を行うことができる.
宣言した変数はサーバーを再起動するまで保持される.
4. pageディレクティブ
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
pageディレクティブはJSPページ全体の設定を指定する.言語やエンコーディングなど.
5. includeディレクティブ
<%@ include file="header.jsp" %>
includeディレクティブは他のJSPページやHTMLファイルを現在のJSPページに含めるために使用する.
JSPファイルの実行中に呼び出すことが可能で,含めるファイルは同じコンテキスト内にある必要がある.
6. EL式
<p>
Welcome, ${user.name}!
</p>
EL式を利用することで,Javaコードを書かずに変数の値を要素に入れることができる.
ここではJSPの基本的なタグを紹介したが,他にもさまざまな特殊なタグが用意されている.