サイトロゴ
この章で行う学習内容
 

JSP
JSPとは
JSPとは、JavaServerPagesの略で、javaによるサーバサイド・スクリプティング を実現するためのテクノロジです。簡単に言うと、HTMLの中にJavaのコードを埋め込んで実行させるための仕組みがJSP と言う事になります。尚、jspを動かすには、tomcatを起動しないと動かす事が出来ませんので覚えておいて下さい。
利点
javaの実行結果をhtmlとして出力できるため、クライアント(使用者)
の要求に応じた動的なページを作成する事が出来ます。
html をベースに記述できるため、デザインと処理を分離しやすいです。

例文
							
							<%@ page contentType='text/html; charset=Shift_JIS' %>
							//このJSPに対して、日本語を使用する事を定義しています。
							<html>
								<head>
									<title>JSPサンプル</title>
								</head>
								<body>
									<%
										//10回ループ処理
										for(int i = 0; i < 10; i++){
									%>
											<% -- iの値を表示(これはコメントです。) -- %>
											<%= i %>
									<% } %>
								</body>
							</html>
						
注意点
・jsp内でjavaのソースを記述する際は、パーセントで括った中に書かなければなりません。パーセントで括った中であれば、コメントは「 // 」で書くことが出来ます。
・javaの変数の値を画面上に表示したい場合は、<%= %>を使用する事で表示する事が出来ます。
・jsp内にコメントを書く際は、<% -- コメント -- %>を使用する事でコメントを書くことが出来ます。
JSP表示サンプル2(htmlから値を取得)
ユーザ名を入力しログインボタンを押下すると、次の画面で「こんにちは、○○さん」と表示される画面があったとします。 この動きを実現するには、どのような処理を行ったら良いのかをサンプルを見ながら説明していきます。
例文
							
							<html>
								<head>
									<title>JSP表示サンプル2_01</title>
								</head>
								<body>
									<form name='form' action='JspDisplaySample2_02.jsp' method='POST'>
										ユーザー名:<input type='text' name='text' value=''>
										<input type='submit' name='submit' value='ログイン'>
									</form>
								</body>
							</html>						
							
					<%@ page contentType='text/html; charset=Shift_JIS' %>
					<html>
						<head>
							<title>JSP表示サンプル2_02</title>
						</head>
						<body>
							<%
								//文字化け防止
								request.setCharacterEncoding('Shift_JIS');
								//前画面(JspDisplaySsample2_01.html)で入力されたユーザー名を取得
								//取得したいname属性をgetParameterの引数に入れる事で取得できる
								String userName = request.getParameter('text');
							%>
							<%-- 取得したユーザー名を表示 --%>
							こんにちは、<%= userName%>さん
						</body>
					</html>
						
htmlから値を取得する際の注意点
htmlから値を取得する時は、getparameterメソッドを使用し引数に取得したいname属性を指定します。

取得した値を表示したい場合は、>%= %<を使用し取得した変数名を指定します。

日本語を取得したい場合は、値を取得する処理の前にsetCharacterEncodingメソッドを使用し文字化け防止処理をします。
暗黙オブジェクト
値を取得する時と文字化け防止する時に「request」という変数を使用していました。なぜどこにも宣言していない変数を使用できるかというと、jspには暗黙オブジェクトというものが存在します。
暗黙オブジェクトとは、文字通り暗黙のうち存在するオブジェクト(変数)のことです。

下記が主な暗黙オブジェクトになります。
変数名 クラス名
request HttpServletRequest
response HttpServletResponse
session HttpSession
out PrintWriter
JSPの構成
jspを構成するものには、ディレクティブ、アクション、スクリプトがあります。

ディレクティブ
ディレクティブとは、jspコンテナ(jspの実行環境)にjspページの情報を指示する
ためのものです。ディレクティブには以下の3つがあります。
ディレクティブ 説明
page JSPページの様々な属性を定義します。
taglib JSPが使用するタブライブラリを宣言します。
include JSPページに外部ファイルの内容を挿入する際に使用します。
out PrintWriter

構文
<%@ ディレクティブ 属性 = 値%>


pageディレクティブを使用し、arraylistをインポートする例
<%@ page import = "java.util.ArrayList"%>

アクション
アクションとは、beanをインスタンス化したり、別のjspファイルの結果を表示
したりする作業を、javaのコードを書かずに実行するためのものです。
アクションには以下のようなものがあります。
アクション 説明
useBean Beanをインスタンス化します。
setProperty Beanのインスタンスに値をセットします。
getProperty Beanのインスタンスのプロパティの値を取得します。
Include Beanの別のJSPファイルの実行した結果を表示します。
forward リクエストを別のJSPやサーブレット、HTMLファイルに転送します。
構文
パターン1 ・・・ <jsp:アクション名 属性=値 />
パターン2 ・・・ <jsp:アクション名 属性=値> ボディ 


includeアクションを使用し、includesample.jspの実行した結果を表示する場合の例
<jsp:include page=“includesample.jsp”/>


スクリプト
スクリプトとは、jsp内にjava言語などのプログラム言語を記述する際に使用するものです。 スクリプトの構文には、下記のように3種類あります。
スクリプト 説明
宣言 変数などの宣言を行う事が出来ます。
スクリプトレット プログラムを書くことが出来ます。
変数や式を書くことで、画面に値が表示されます。Javaで言うところのSystem.outと同じ役割をします。
構文
   <%! 宣言 %>
   <% スクリプトレット%>
   <%= 式 %>

スクリプトを使用した例
   <%! private int i ; %>
   <% for(int j = 0; j < 10; j++){
i = j ;
     }
   %>
<%= i %>
JSPの構成(サンプル1)
							
			<%@ page contentType='text/html; charset=Shift_JIS' %>
			<%@ page import='java.util.ArrayList'%>
			<%!
			private ArrayList list;
			%>
			<html>
			<head>
			<title>JSPの構成サンプル1</title>
			</head>
			<body>
			<%
			//ArrayListの初期化
			list = new ArrayList();

			//listに値を格納
			for(int i = 0; i < 5; i++){
			list.add('jspの構成サンプル 【' + i + '】');
			}
			%>
			ArrayListの中身を表示<br> 
			<%
			//listの要素数分ループ
			for(int j = 0; j < list.size(); j++){
			%>
			<%=(String)list.get(j)%><br>
			<% } %>
			</body>
			</html>
						
JSPの構成(サンプル2)
							
				<%@ page contentType='text/html; charset=Shift_JIS' %>
				<html>
				<head>
				<title>includeするjspファイル</title>
				</head>
				<body>
				<%
				String name = 'こんにちは!includeされました。';
				%>
				</body>
				</html>
						
							
				<%@ page contentType='text/html; charset=Shift_JIS' %>
				<%@ include file='include.jsp' %>
				*include.jspを読み込む事を指定
				<html>
				<head>
				<title>JSPの構成サンプル2</title>
				</head>
				<body>
				<%=name%>
				//include.jspを読み込んでいるためnameを指定する事が出来る
				</body>
				</html>
						
 

リクエスト

リクエストとは
リクエストとは、次の画面に渡す値を格納する事の出来るクラスです。
また、「要求」という意味にもなります。リクエストには、有効期限があり、
1画面(1遷移)になります。
有効期限に関して、イメージが湧かないと思います。
下記のサンプルをを使いながら説明します。
リクエストとは(サンプル1)
下記サンプルはログイン画面で名前を入力し、確認画面でログイン時に入力された名前を表示するものです。ログインボタン(submit)が押下されると、 リクエストが新規作成されます。submitは押されたときに、同じformタグ 内にある、name属性のあるタグの値をactionで指定されたパスに渡します。 この渡された値が、リクエストに自動的に格納されます。
							
<form name='form' method='POST' action='RequestSample_2.jsp'>

名前:<input type='text' name='text' value=''><br>

<input type='submit' value='ログイン'>
</form>
						
							
<%@ page contentType='text/html; charset=Shift_JIS' %>
<html>
<head>
<title>リクエストサンプル2</title>
</head>
<body>
<%
	//文字化け防止
	request.setCharacterEncoding('Shift_JIS');
	//ログイン画面で入力された名前を取得
	String name = request.getParameter('text');
	//【構文】
	//*String s = request.getParameter('キー');
%>
<%-- 取得した名前を画面に表示 --%>
<%=name%>さん、こんにちは。
</body>
</html>
						
リクエストとは(サンプル2)
							
<%@ page contentType='text/html; charset=Shift_JIS' %>
<html>
<head>
<title>リクエストサンプル3</title>
</head>
<body>
<%
	//文字化け防止
	request.setCharacterEncoding('Shift_JIS');
	//ログイン画面で入力された名前を取得
	String name = request.getParameter('text');
%>
<%-- 取得した名前を画面に表示 --%>
<%=name%>さん、こんにちは。
</body>
</html>
						
							
<form name='form' method='POST' action='RequestSample_3.jsp'>
<%
//文字化け防止
request.setCharacterEncoding('Shift_JIS');
//ログイン画面で入力された名前を取得
String name = request.getParameter('text');
%>
<%-- 取得した名前を画面に表示 --%>
<%=name%>さん、こんにちは。<br>
<input type='submit' name='submit' value='次の画面へ'>
<input type='hidden' name='hidden' value = <%=name%> >
</form>
						
リクエストとは(サンプル3)
							
<body>
<%
//文字化け防止
request.setCharacterEncoding('Shift_JIS');
//ログイン画面で入力された名前を取得
String name = request.getParameter('hidden');
%>
<%-- 取得した名前を画面に表示 --%>
<%=name%>さん、こんにちは。
</body>
						
リクエストの注意点
リクエストには有効期限があり、1画面(1遷移)しか値を保持することが出来ません。


リクエストに格納されている値を次画面で取得する際は、
String s = request.getParameter(“キー”);
を指定することで取得出来ます。尚、「キー」にはname属性で指定されている文字を入れます。
リクエストに格納されている値を、3画面以降で表示したい場合は、inputタグのtype属性にある、 hiddenを使用することで可能になります。