JSP基礎

JavaServlet Pageの略。
JSPはサーブレットに変換されてから実行される。
サーブレットに変換されたJSPは、tomcatがインストールされたディレクトリ、localhostの中のコンテキストごとのディレクトリの中に存在する。

ディレクティブ

JSPにとってのヘッダーみたいなもの。
<%@ ディレクティブ名 属性名=”値” 属性名=”値” %>という風に書く。

pageディレクティブ

language
JSPで使用する言語の指定。デフォはjava

extends
JSPページを他のクラスのサブクラスにするとき、親クラスを指定する。

import
JSPページでクラスをimportする場合に使う。複数のクラスをimportする場合は、
<%@ page import=”java.util.* , java.io.* ” %>と、コンマで区切る。

session
セッションを有効にするかどうかを指定。デフォはtrue

buffer
JSPから出力されるデータをバッファとしてクライアントに返すかどうかを指定する。
noneに指定すると、バッファされずにクライアントに出力データが送られる。
「8kb」のようにキロバイト単位で指定すると、バッファが出力データでいっぱいになるまで待ってからクライアントにまとめて送信される。デフォは8kb

autoFlush
バッファを指定する場合に、バッファを超える出力データがあった場合の処理について指定する。
trueの場合、バッファがいっぱいになったら、自動的にクライアントにデータを送信する。
falseの場合、バッファがいっぱいになると例外が発生する。

isThreadSage
スレッドセーフで実行するかどうかを指定する。trueの場合、複数のリクエストがあった場合に
同時に実行されることを許可する。
falseの場合は、リクエストの到着順に1つずつ処理される。デフォはtrue

info
JSPページに関する任意の情報を記述する。
制作者や作成日など。

errorPage
エラーが発生した場合に表示するページへのパスを記述する。
指定しない場合は、デフォのエラーページが表示される。

isErrorPage
JSPがエラー表示用のページかどうかを指定する。
errorPageでエラー表示先を指定した場合には、errorPageをtrueに設定する必要がある。
trueの場合は、exceptionオブジェクトが利用可能になるので、これを使ってエラーに関する情報を取得できる。デフォはfalse

ContentType
JSPのデータ型と、必要であれば文字コードをMIMEタイプを使って記述する。
デフォはtext/html;charset=ISO-8859-1になっている。
文字コードを指定する場合は、セミコロンを付けた後でcharset=文字コードと書く。

PageEncoding
JSPの文字コードを指定する。
デフォはcontentTypeで指定した文字コードになるからあえての指定は不要。

isElIgnored
EL式を適用するかどうかを指定。
trueの場合は適用しない。falseの場合は適用する。デフォはfalse

includeディレクティブ

このディレクティブを記述した位置に、他のhtmlファイルやjspファイルなどの
テキストファイルを読み込む。
<%@ include file=”入れたいファイルのURL” %>

ファイルの指定に「/」から記述した場合は、
コンテキストで指定したドキュメントルートからの絶対パスになる。
それ以外の場合は、jspファイルからの相対パスになる。

taglibディテクティブ

jspでは、定期的に使われるような処理をまとめてタグと呼ばれるものに登録できる。
タグを集めたものがライブラリ。
標準で用意されているライブラリを、タグライブラリ、自分で作成したライブラリを、
カスタムライブラリという。

スクリプティング

jspページの中で、javaのプログラムを記述する部分。
「変数の宣言」「式の評価」「スクリプトレット」に分かれる。

スクリプトレット
jspにjavaのコードを記述する部分。
<%
javaのコード
%>
という風に書く。

式の評価を出力。
スクリプトレットで定義した変数の値をhtml文として表示することができる。
<%= 変数名 %>
と書く。
<%= “式の評価は” + 変数名 + “です。”>
という書き方もできる。

変数の定義
スクリプトレットで変数を宣言すると、それはローカル変数となり、jspが呼び出されるたびに初期化される。
初めてjspが呼び出されたときに初期化され、jspが動いているtomcatが起動している間は有効となるような変数を定義するには
<%!
変数の宣言
%>
と書く。
メソッドの記述もできる。
<%!
int メソッド名(){
}
%>

でも<%! %>この中に、request.getString(“値”);と書いたらエラーになった。
リクエストの値などで変数への代入をしたらダメ?

また、<%! %>で読み込んだ変数は、ページを遷移した後もずっと値を保持したままだった。<%! %>内で作ったarraylistに、値を追加する式を書いて、servletに飛び、また戻ってきてページを読み込んだらどんどん値が追加されてしまった。
スクリプトレットでページが読み込まれるたびに、arraylist.clear()で値を初期化して解決した。

<jsp:useBean>

javaのクラスをJSPで利用できるタグ。
<jsp:useBean id=”任意のオブジェクト名” class=”クラス名” scope=”page” />
指定したクラスを取得できる。
scopeは、取得したクラスをどの範囲で使えるのかを示す。
デフォはpageで、pageは、現在のページでのみ取得したクラスを使えるという意味。
scope=”request”と書いたら、フォーワードした先のページでも取得したクラスを使える。

<jsp:useBean id =”aaaa” class=”クラス名”>
<jsp:setProperty name=”aaaa” property=”id” value=”任意のID” />
と書けば、取得したクラスの変数IDに、任意のIDを設定することができる。

<jsp:getProperty name=”aaaa” property=”id” />
と書けば、取得したクラスの変数idの値を画面に表示できる。

formからサーブレットに値を飛ばす

<form method=”post” action=”サーブレット名” onsubmit=”return 関数名()”>
</form>
postで、指定したサーブレットにデータを送ることを示す。
onsubmitで指定すれば、submitを押したときに、javascriptの関数を呼ぶこともできる。
returnと書いているので、そのjavascript内でreturn falseとすれば、フォームの送信をキャンセルできる。

htmlのsubmitからjspへ値を受け渡す

<form name=”フォーム名” method=”POST” action=”送信先.jsp”>
<input type=”hidden” name=”aaaa” value=”ああああ”>
</form>
上記のフォームでjspに送信を行うと、jspのほうで
request.getParameter(“aaaa”)の記述で「ああああ」という値を取得できる。
しかし、tomcatでは文字をISO-8859-1で読み込む?らしく文字化けする。
なので以下の記述をすることで、正しく文字を取得できる。
String ID = new String(request.getParameter(“aaaa”).getBytes(“ISO-8859-1”));

編集画面
タイトルとURLをコピーしました