項目 | タグ | 説明 |
---|---|---|
ディレクティブ
directive | <%@ 〜 %> | JSPの変換コマンド |
宣言
declaration | <%! 〜 %> | フィールド、あるいはメソッドに変換される。 |
スクリプトレット
scriptlet | <% 〜 %> | 処理を書く |
式
expression | <%= 〜 %> | 出力する式を書く |
ディレクティブはpage、include、taglibの3種類があります。
宣言は変換されると、サーブレットのフィールド、メソッド扱いとなります。
スクリプトレットは普通にJavaコードを書く部分です。 Javaコードなので、;が必要です。
<% int a=1; %>
式は、JSPに出力する式を書きます。 ;は不要(書いてはいけない)です。
<%=a %>
宣言を使うことで、 サーブレットのフィールドやメソッドに相当するものをJSPに記述できます。 ただし、フィールドは、セッションやアプリケーションスコープのオブジェクトで代用可能。メソッドは他のクラスに書いた方がわかりやすいこともあり、 宣言はあまり使われません(JSPだけで書く場合には使うけど)。
<%--JSP(include)ディレクティブ--%> <%@include file="/hoge.jsp" /> <%--JSPタグ--%> <jsp:include page="/hoge.jsp" />
ディレクティブの例
<jsp:directive.page contentType="text/html; charset=Shift_JIS" />
JSPアクションの例
通常の書き方と同じっぽい。
<jsp:include page="hoge.jsp"/>
宣言(declaration)の例
<jsp:declaration>int count = 0;</jsp:declaration>
式(expression)の例
<jsp:expression>count</jsp:expression>
スクリプトレットの例
<jsp:scriptlet>out.println(count);</jsp:scriptlet>
動作確認していません。
pageディレクティブに指定できる属性はいろいろあります。
<%@ page [ language="java" ] [ extends="package.class" ] [ import="{package.class | package.*} , ... " ] [ session="true|false" ] [ buffer="none| 8kb|sizekb" ] [ autoFlush="true|false" ] [ isThreadSafe="true|false" ] [ info="text" ] [ errorPage="relativeURL" ] [ isErrorPage="true| false" ] [ contentType="{mimeType [ ; charset=characterSet ] | text/html ; charset=ISO-8859-1}" ] [ pageEncoding="{characterSet | ISO-8859-1}" ] %>
重要なものは以下
<%@page import="java.util.Date" %> <%@page import="java.util.*" %> <%@page import="java.util.Date, java.util.Vector" %>
ちなみに、","区切りでダラダラ書くときは、 インデントを揃えると見やすいです。
<%@ page import="com.muimi.Hoge, com.muimi.Foo, com.muimi.Bar, java.util.List" %>
<%@page session="true" %>デフォルトがtrueなので、セッション属性を使わない場合だけ、 falseで指定する。
<%@page errorPage="error.jsp">JSPページ内で例外が投げられた場合の遷移先のページを指定できます。
<%@page isErrorPage="true">遷移先のJSPで、この記述をする。 この宣言をすることで、暗黙のexceptionオブジェクトを利用できます。
オブジェクト | 型 | スコープ | 説明 |
---|---|---|---|
request | javax.servlet.ServletRequest
のサブクラス | Request | リクエスト。 |
response | javax.servlet.ServletResponse
のサブクラス | Page | レスポンス。 |
out | javax.servlet.jsp.JspWriter | Page | 出力ストリームに書き込むときのオブジェクト。 |
session | javax.servlet.http.HttpSession | Session | セッションオブジェクト。 |
config | javax.servlet.ServletConfig | Page | サーブレットコンフィグオブジェクト。 |
application | javax.servlet.ServletContext | Application | サーブレットコンテキストオブジェクト。 |
page | java.lang.Object | Page | 生成されたサーブレットのthis。 |
pageContext | javax.servlet.jsp.PageContext | Page | このページ環境。通常サーブレットエンジンが使用。 |
exception | java.lang.Throwable | Page | エラーページで利用される、例外オブジェクト。 |
<%= name; %>
結果:式に";"があるのでコンパイルエラー。
<% for(int i=0; i<10; i++) %> <%= "item[i]" %> <% } %>
結果:"item[i]"という文字列を10回分表示(""でかこってるから)
<% int c=a+b; %> <%= "c=" + c %> <%! int a=1; %> <%! int b=2; %>
結果:"c=3"を表示。