JSPの要素
JSPファイルをまだほとんど書いたことがなく、よく忘れるのでメモしておく。
HTML部分については省略。ちゃんと勉強して別記事でまとめたい・・・。
pageディレクティブ
一番ややこしい部分かもしれないが、JSPファイルの設定に関する部分なので大事な要素。
書き方は<%@ page 属性名=”値” %>
で、属性は半角スペースで区切れば複数設定可能。
eclipseとかで作成する場合は、contentType属性やpageEncoding属性などは自動で記述してくれたりするが、javaクラスをimportする場合は自分で記述する必要がある。
しかし、java.lang, javax.servlet, javax.servlet.jsp, javax.servlet.httpは自動インポートされるので、request, session, applicationなどのスコープのオブジェクトやresponse, out, page, exceptionなどは宣言せずに利用できる暗黙オブジェクトである。
ちなみに、インポートするクラスはパッケージに所属している必要がある。
以下は複数のクラスをインポートする場合の記述例
<%@ page import="java.util.ArrayList, java.util.Date" %>
スクリプトレット
Javaコードを記述する部分。
<% Javaのコード %>
の形式で、任意の場所に複数記述できる。
宣言した変数やインスタンスは同じファイルの以降のスクリプトレットで使用できる。
if文やfor文を複数のスクリプトレットに分けて書くこともできる。
<% // "hello world"を10回表示 %> <% for(int i=0; i<10; i++){ %> <p>hello world</p> <% } %>
スクリプト式
変数やメソッドの戻り値などを出力する。
Javaの文法とは違い、文末のセミコロンは不要。
<%= 変数名 %> → 変数に代入されている値
<%= 演算式 %> → 演算結果
<%= オブジェクト %> → オブジェクト.toString()の戻り値
<%= オブジェクト.メソッド() %> → メソッドの戻り値
これくらいスラスラ〜ってかきたい
追記:EL式
「スコープに保存されている」インスタンスを簡単に取り出せる。
例えば、sessionスコープに保存されているFruitインスタンスは
<%@ page import="(パッケージ).Fruit" %> <% Fruit fruit = (Fruit) session.getAttribute("fruit"); %> <%= fruit.getName() %>
とか3行もかけて記述しなくても
${human.name}
とするだけで同じことができる。
(EL式でインスタンスのプロパティを指定した場合は自動でgetterを実行している)
ただし、これはスクリプト式やスクリプトレット内では使用できないので
使用したければ、JSTLなどのカスタムタグを使用する。
JSTLについては別記事にでも書ければと思う。