libro
www.tuyano.com
初心者のためのJSP/サーブレット入門

JSP(Java Server Pages)を使おう! (5/5)

作成:2012-04-29 12:03
更新:2012-04-29 12:03

■メソッドとフィールドを定義してみよう

これで、まとまった処理をJavaで書いて実行させることはできるようになりました。でも、これってなんか不思議な感じですね。Javaというのは、こんな具合に「文をずらっと書いたらそれを実行する」というような言語ではありません。通常はクラスを定義し、その中にメソッドフィールドを定義して実行するものです。

このような「実行する文をずらずら書く」というやり方では、メソッドを定義して呼び出すようなことはできないのか?と思ってしまうかも知れません。が、その心配は要りません。ちゃんとメソッドを定義するための専用タグというのが用意されているのです。

それは、<%! %>というものです。この<%!%>の間に、メソッドの定義変数の宣言などを記述すると、それらがコード内で利用可能になります。メソッドだけでなく、変数も用意できるのは、それが一種のグローバル変数として使えるようになる働きがあるためです。つまり、<%! %>内で宣言した変数は、他のメソッドなどすべてで使えるようになるのです。クラスにおけるフィールドのような働きをする、と考えればよいでしょう。

では、簡単な利用例を挙げておきましょう。下のリスト欄は、前回のサンプルを更に修正したものです。ここでは、日付のフォーマットを示すテキストであるformat_strと、フォーマットして生成された日付テキストを保管するresultを変数として用意しています。そして日付のフォーマットを設定するsetFormatStrと、今日の日付をフォーマットし変数resultに代入するprintTodayの2つのメソッドを用意してあります。

ここでは2回、テキストを出力しています。この部分を見てみましょう。このようになっていますね。
<% printToday(); %>
<p><%=result  %></p>
<% setFormatStr("yyyy年 MM月 dd日"); %>
<% printToday(); %>
<p><%=result  %></p>
setFormatStrでフォーマットを設定し、printTodayでフォーマット済みテキストを作成し、<%=reslt %>で出力する、という流れで処理をしています。それぞれのメソッドや変数がきちんど機能していることがよくわかりますね。

また、これらのコードから、もう1つ、重要なことがわかります。それは、「JSPのJavaコードは、複数のタグに分かれて記述されていても、すべて1つにまとまったものとして扱われる」という点です。実行する処理は、1つの<% %>タグにまとめて書く必要はありません。いくつのタグに分けて書いてあっても、それらはすべて一続きになった処理としてまとめて扱われるのです。これは非常に重要なJSPの特性として、しっかり頭にいれておきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※helo.jspの修正

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%!
String format_str = "yyyy-MM-dd";
String result = "none.";

void setFormatStr(String s){
	format_str = s;
}
void printToday(){
	Calendar calendar = Calendar.getInstance();
	SimpleDateFormat format = new SimpleDateFormat(format_str);
	result = format.format(calendar.getTime());
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
	"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>Sample jsp</title>
	<style>
	h1 {font-size:16pt; background:#AAFFAA; padding:5px; }
	</style>
</head>
<body>
	<h1>Sample jsp page</h1>
	<p>これはサンプルで用意したページです。</p>
	<% printToday(); %>
	<p><%=result  %></p>
	<% setFormatStr("yyyy年 MM月 dd日"); %>
	<% printToday(); %>
	<p><%=result  %></p>
</body>
</html>

※関連コンテンツ

「初心者のためのJSP/サーブレット入門」に戻る