アットウィキロゴ
okoba23 @ ウィキ
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

okoba23 @ ウィキ

JSP基本

最終更新:

okoba23

- view
管理者のみ編集可

JSPタグ

構成要素

ページ処理方式の指示をするディレクティヴ(directive)

  • JSPを処理する方法をコンテナに指示するためのJSPタグ

javaコード記述のためのスクリプティング要素(scripting element)

  • JSP内にjavaコードを記述するためのもの

JSPに注釈文を記述するためのコメント(comment)

タグに関連付けられたjavaコードを呼び出すアクションタグ(action tag)

  • タグに関連づけられたjavaコードを呼び出すためのJSPタグ
JSPタグ 記述形式
ディレクティブ <%@ %>
JSP式 <%= %>
スクリプレット <% %>
JSP宣言 <%! %>
コメント <%-- --%>

pageディレクティブ

<%@ page属性名1="属性値1" [page属性名2="属性値2・・・・・・] %>

example.)
<%@ page contentType="text/html; chareset=Shift_JIS"
                                 pageEncoding="Shift_JIS" %>
<%@ page import="java.util.Date" %>   -------------->importするパッケージの設定

分類 属性名 説明
返却データのコンテントタイプ contentType JSPが返却するデータのコンテントタイプ
JSPのエンコーディング方式 pageEncoding JSP自身のエンコーディング方式
インポート import 外部クラスをimportする
セッション session セッションの有無を指定
エラーページの表示 errorPage 例外発生時に表示するJSPを指定
inErrorPage JSPで発生した例外オブジェクトをJSPに引き渡す
バッファ buffer bufferサイズを指定
autoFlush bufferサイズで指定されたサイズを超えた場合の振る舞い
スクリプティング言語 language スクリプティング言語の指定
ページ情報 info JSPの情報を指定
継承 extends JSPのスーパークラスを指定
同期 isThreadSafe 同じJSPに対する要求が同時に発生した場合の処理方式

JSP式

  • JspWriterクラスのprintメソッドの引数として展開される。
  • out.prin("○○○");のように。
<%= java式 %>

■example
<%@ page contentType="text/html; charaset=Shift_JIS" pageEncoding="Shift_JIS" %>

<html>
<head>
<title>test</title>
</head>
<body>
<%= "HelloWord!" %>    -------------------------> 文字列
<br>
<%= Integer.parseInt("10") %>  -----------------> 基本データ型
<br>
<%= new Object() %>   --------------------------> java.lang.Objectオブジェクト
<br>
<%= new java.util.Date() %>  -------------------> java.util.Dateオブジェクト
</body>
</html>

スクリプレット

  • JSPにjavaのstatementを埋め込むには、スクリプレット(scriplet)を使用。
  • javaコード記述は通常のjavaプログラムと同じなので、セミコロンが必要。
  • <iscode>みたいに組み込み式。
  • package文、import文は組み込めない。pageディレクティブで記述する事。
  • _jspServiceメソッドの一部として展開される。
  • _jspServiceメソッド内でのローカル変数となるので、JSPがリクエストされるたびに初期化される。
  • 宣言する変数は初期化しておく必要がある。していないとエラー。
<% javaコード %>

■example
<%@ page contentType="text/html; charaset=Shift_JIS" pageEncoding="Shift_JIS" %>
<html>
<head>
<title>test1</title>
</head>
<body>
<% int i = 10;
       i = 10*i;
%>                 ----------------------------> scripletの記述
10*10=
<%= i %>           ----------------------------> JSP式を使って、表示出力
</body>
</html>

JSP宣言

  • JSP内で変数やメソッドを宣言する時に使用。
  • JSP宣言で宣言した変数はJSPが実行した後も値が保持される。
  • JSP宣言ではプログラムがロードされた後に変更する事のない、読み取り専用の変数を宣言する。
  • 更新する必要がある場合には、スレッドセーフにしておく。
  • メソッドも宣言可能。
<%! %>

■example
<%@ page contentType="text/html; charaset=Shift_JIS" pageEncoding="Shift_JIS" %>
<html>
<head>
<title>test2</title>
</head>
<body>
<%! int x=0; %>             --------------------> JSP宣言(変数の宣言)
<%
  int y = 0;
      x ++;
      y ++;
%>                          --------------------> scriplet内で宣言した変数
<%= "JSP宣言で宣言した変数:" + x %>
<br>
<%= "scriplet内で宣言した変数:" + y %>
<%!
  String aisatu(){
    return "Hello!!";
  }                         --------------------> JSP宣言(メソッドの宣言)
%>
<%= aisatu() %>             
</body>
</html>

JSP実行時の動作

  1. ブラウザからのリクエスト受信
  2. JSPをservletへ変換
  3. 変換されたservletをcompile
  4. compileされたクラスファイルをロード
  5. クラスファイル実行
  • JSP実行時には、変換->compile->ロードが行われるため実行時間が多少かかる。ただし、コンテナは、メモリにロードされたクラスファイルはできる限りメモリ上に残すので通常2回目以降はメモリにロードされているクラスファイルを使用する。

変換されたservlet

  • JSPから変換されたservletは%CATALINA_HOME%/work/Catalina/localhost/[ディレクトリ]/org/apache/jsp配下にできる。
  • .java拡張子のファイルがservletに変換されたJSPのjavaソースコード。
  • 変換されたjavaソースコードは、org.apache.jasper.runtime.HttpJspBaseクラスを継承したクラスとして生成。(HttpJspBaseクラスは、JSPコンテナが生成するservletの抽象クラス)
  • ブラウザからのリクエスト時にコンテナはservlet内の_jspServiceメソッドを呼び出す。
記事メニュー
最近更新されたスレッド
ウィキ募集バナー