JSP(JavaServer Pages)(更新中) - user000422/0 GitHub Wiki
テンプレート … HTMLで書かれた部分 、スクリプト … Javaで書かれた部分
スクリプトレット … Javaのコードを埋め込む(記述箇所は自由)
1つのJSP内で分けて記述することができ、変数は複数のスクリプトレット内で使用可
<% int x = 10, y = 20; %>
<% int z = x + y; %> <%-- 前述の変数の値を保持している --%>
スクリプト式(単に式と呼ぶことも) … 変数や戻り値などを出力(セミコロンは不要)
戻り値のないメソッドなどは使用できない
<%= sample %> <%-- 変数に代入されている値を出力 --%>
<%= 演算式 %> <%-- 演算結果 --%>
<%= オブジェクト.メソッド() %> <%-- メソッドの戻り値 --%>
pageディレクティブ … JSPファイルに関するさまざまな設定
属性は半角スペースで区切ることで複数設定可
contentType
や import
がよく使われる属性
EclipseでJSPファイル作成時に自動で書かれる
<%@ page 属性名 = "値" %>
<%@ page contentType="text/html; charset=UTF-8" %> <%-- レスポンスのContent-Typeヘッダ --%>
<%@ page import="java.util.ArrayList" %> <%-- インポートするクラス、インターフェース --%>
JSPコメントと、HTMLコメントについて … 基本JSPコメント推奨 <%-- x --%>
HTMLコメント <!-- x -->
は、ブラウザから閲覧可能なのでセキュリティに気をつけること
JSPファイルの実行方法
URL http://サーバ名/アプリケーション(Webプロジェクト)名/WebContentからのパス
例) http://localhost:8080/example/index.jsp
if
<% if(color = red) { %>
赤色です。
<% } else { %>
赤色ではないです。
<% } %>
JSTL… JSPでよく使われる標準的なカスタムタグをまとめたライブラリ
Webサイトよりダウンロードしたライブラリを WEB-INF\lib
に格納する
<%-- coreタグ定義(プレフィックスは慣習的に「 c 」が使われる)--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<c:set var="color" value="red" /> <%-- set 変数宣言(変数名をvarに、値をvalueに) --%>
<c:set var="food" value="<% sample.getFood(); %>" /> <%-- javaのコードも利用可能 --%>
include … 共通で使い回せるjspファイルなどを呼び出す
動的includeタグは、終了タグの省略ができないため />
で終わらせる必要がある
<%-- 静的includeタグ インクルード先の内容(Java変数など)を利用できる --%>
<%@ include file="/common.jsp" %>
<!DOCTYPE html>
<%-- 動的includeタグ インクルード先の内容を利用できない --%>
<jsp:include page="/footer.jsp" />
EL式 … スコープに保存されたインスタンスを簡潔な記述で利用
仕組みはgetterが自動的に実行され、値を取得
スコープを指定しない場合の探査の順番 … 「Page」->「Request」->「Session」->「App」
EL式の暗黙のオブジェクトを利用しスコープを指定することができる
<%-- スコープを指定せず属性名とプロパティで指定 --%>
${monster.name}
<%-- sessionScope セッションスコープから取得 --%>
${sessionScope.id}
<%-- requestScope リクエストコープから取得 --%>
${requestScope.name}
<%-- requestScope リクエストパラメータから取得 --%>
${param.userId}
%{ ・・・ }(OGNL式) value="%{ ・・・ }"
%{ ・・・ }をつけないとvalue内の文字列がそのまま表示される
submit クリック後に error で入力欄の入力文字が消えるのを阻止
<!--- 入力欄 に session.key の 値 が 表示される --->
<s:textfield name="" value="%{#session.key}">
Eclipceの文法チェックで、エラーの無い箇所にも関わらず文法エラー扱いされてしまう
該当箇所を 切り取り
-> 貼り付け
-> 上書き保存
※エラーJSP画面表示で文字化け
原因:設定で文字コードがUTF-8になっていないため
ウインドウ
-> 設定
-> 一般
-> コンテンツ・タイプ
-> テキスト
-> JSPビュー
デフォルトエンコード
を UTF-8 に
ウインドウ
-> 設定
-> Web
-> JSPファイル
エンコード
を UTF-8 に