タイトな文字列

@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
JSP
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
サーブレット
入門教室
山田祥寛 著
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@@@@@@@
?@@@@@@@@
@@@@@@@@ ?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@ ?@@@@@@@@
本書内容に関するお問い合わせについて
このたびは翔泳社の書籍をお買い上げいただき、誠にありがとうございます。弊社では、読者の皆様からのお問い合わせに適切に対
応させていただくため、以下のガイドラインへのご協力をお願いいたしております。下記項目をお読みいただき、手順に従ってお問
い合わせください。
●ご質問される前に、http://www.shoeisha.com/info/help.aspをご参照ください。
弊社Webサイトの「Q&Aコーナー」です。これまで受けたご質問への回答(FAQ)や、的確なご質問方法に関する情報を掲
示しています。
●ご質問方法はすべて、http://www.shoeisha.com/book/qa/からお願いします。
弊社Webサイトの質問専用フォームサイトです。
お電話や電子メールによるお問い合わせ、独自の用紙を使った郵送によるご質問、本書にはさみ込まれたアンケートはがきに
記入されたご質問には、お答えいたしかねます。
●インターネットがお使いになれない読者の方には、質問専用シートをお送りします。
お客様のお名前、ご住所、郵便番号、FAX番号、「質問専用シート希望」と明記のうえ、FAXか郵便で下記宛先までお申し込
みください。折り返し質問シートをお送りいたします。郵便の場合は、80円切手を同封してください。
シートがお手元に届きましたら、ご質問と必要事項を漏れなく記入し、「編集部読者サポート係」まで、FAXまたは郵便にてご
返送ください。
●郵便物送付先およびFAX番号
送付先住所
FAX番号
宛先
〒160-0006 東京都新宿区舟町5
03-5362-3818
(株)翔泳社 出版局 編集部読者サポート係
●すぐにご回答できない場合もあります。
ご回答は、ご質問いただいた手段によってご返事申し上げます。ご質問の内容がむずかしいもののときは、回答の作成に数日
ないしはそれ以上の期間を要する場合があります。
●このようなご質問には、お答えできません。
本書の説明範囲を超えるもの、記述個所を特定されていないもの、また機械の故障や不具合など、お客様固有の環境に起因す
るご質問にはお答えできませんので、あらかじめご了承ください。
※本書に記載されたURL等は予告なく変更される場合があります。
※本書の出版にあたっては正確な記述に努めましたが、著者および出版社のいずれも、本書の内容に対してなんらかの保証をするものではなく、内
容やサンプルに基づくいかなる運用結果に関してもいっさいの責任を負いません。
※本書に掲載されている画面イメージなどは、特定の設定に基づいた環境にて再現される一例です。
Microsoft、Windows、Windows NT、は米国Microsoft Corporationの米国およびその他の国における登録商標です。
米国におけるLinux(リナックス)の名称はLinus Torvaldsの登録商標です。日本国内におけるLinuxの名称は、Linus Torvaldsの商標です。
Java、JavaServerPages(JSP)は、Sun Microsystems,Inc.の商標ないし登録商標です。
その他、記載されている会社名、製品名は、各社の登録商標または商標です。
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
よ
うこそ、
JSP/サーブレット入門教室へ!
Javaもサーバサイドも、みんなまとめて楽しくマスター。
10日の授業をすべて受講すれば、あなたも即戦力Webプログラマーの仲
間入り。
JSP/サーブレットという技術が世にお目見えしたのは、それほど古い話ではありま
せん。そもそも「サーバサイド技術」という言葉でひとくくりにされる技術は、長い
あいだ、Perlに代表されるCGIによって支えられてきました。しかし、Webアプリケ
ーションに要求されるいろいろな機能が、昨今急速に多様化かつ高度化する中で、旧
来のCGIのしくみでは十分な開発性・保守性を確保できなくなりつつあるのが現実で
す。すなわち、CGIがかならずしもWebに特化したしくみではない点が、Webという
プラットフォームに高度にマッチしたアプリケーションやシステムを構築するに際し
て、足回りの重さにつながっているということを意味します。
そうしたCGIの問題点を受け、ここ数年来は、いわゆる「サーバサイドテクノロジ」
と呼ばれるものが、次々と登場してきています。MicrosoftのIIS/PWS上で動作する
ASP、CGIのマクロ的な位置づけで登場し、その後、規格として何度かの大きな改訂
を経ながら1個の独立技術としての地位を確立したPHP、そして、本書でご紹介する
JSP/サーブレットなどがそれです。
JSP/サーブレットは、その名のとおり、Javaをベースとしたサーバサイド処理環境
です。個々の技術の特性や比較については、本文の中で詳しく紹介することにします
が 、 JSP/サ ー ブ レ ッ ト は Java の 大 き な 特 性 の 1 つ で あ る "Write Once, Run
Anywhere(一度書けばどこでも動く)" の精神を継承し、今や、サーバサイド技術
のデファクトスタンダードの地位を着実に確立しつつあります。
本書は、このJSP/サーブレットに興味を惹かれ、まずは取り掛かりをつかみたい、
実際の動作イメージを視覚的・体感的につかみたい、という方々に、最初の一歩を提
供するものです。
なにはともあれ、難しく考えないでください。まずは自分の手でプログラムを打ち
込み、そして、自分の目で動きを確認してみてください。小難しい文法書で理論の迷
路にはまりこんでいくことなく、とにかく体感し、そのうえで今後のステップアップ
につなげていくのが本書の第一の目的です。10日間のレッスンがあなたのJSP/サー
ブレット生活の第一歩として役立つことを心から祈っています。
なお、本書に関するサポートサイトを以下のURLで公開しています。Q&A掲示板
をはじめ、タイムリーな情報をお送りしておりますので、あわせてご利用ください。
http://member.nifty.ne.jp/Y-Yamada/jsp10/
最後にはなりましたが、本書を執筆するにあたって、Linux分野の技術の調査・検
証を全面的に支援してくれた日尾有宏君、タイトなスケジュールの中で筆者の無理を
調整いただいた編集の内藤貴志氏、そして、かたわらで校正作業などの制作をアシス
トしてくれた妻の奈美、そのほか関係者ご一同に心から感謝の意を表します。
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@@@@@@@
?@@@@@@@@
@@@@@@@@ ?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@ ?@@@@@@@@
2002年4月吉日 山田祥寛
h?
h?
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@
CONTENTS
第
0
日
オリエンテーション ――――――――――――
vii
今なぜJSP/サーブレットか? ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ viii
JSP/サーブレット動作に最低限必要なもの ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ xiv
Windowsにおける環境設定の方法 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ xv
Linuxにおける環境設定の方法・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ xxxvii
レッスンを始める前に ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ xlix
第
JSPの基本的な構造を学ぼう――――――――1
1
1時限目 おぼえようJSPの基本 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 2
日
2時限目 繰り返し処理を構築してみよう① ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 14
3時限目 フォームからの入力を受け取ろう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 28
4時限目 繰り返し処理を構築してみよう② ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 42
第
第
ユーザリクエストの処理を学ぼう ――――― 55
2
1時限目 クエリ情報を活用してみよう・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 56
日
2時限目 ヘッダ情報を取得してみよう・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 66
3時限目 クッキーを活用してみよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 76
3
日
クラスで拡がるJSPの世界<基本篇> ――― 89
1時限目 HTMLの予約文字をエンコードする ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 90
2時限目 日付の計算をしてみよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 104
3時限目 連想配列を活用してみよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 114
e?
e?@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@
h?
h?
h?
h?
h?
h?
@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
第
4
日
第
第
2時限目 テキストファイルを読み取ってみよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 138
3時限目 カスタムログを記録しよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 146
1時限目 XSLTを使ってXML文書を表示してみよう ・・・・・・・・・・・・・・・・・・・・・・ 156
日
2時限目 DOMでXML文書からデータを抽出してみよう ・・・・・・・・・・・・・・・・・ 170
3時限目 DOMでXML文書を編集してみよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 182
JDBCでカンタンデータベース連携<基本篇> ―― 193
6
1時限目 データベースに新規データを登録する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 194
日
第
1時限目 正規表現検索に挑戦しよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 126
XML+XSLT/DOMでより高度なデータ処理 ―― 155
5
第
クラスで拡がるJSPの世界<正規表現・ファイル篇> ― 125
2時限目 データベースを検索してみよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 204
3時限目 データベースのデータを更新、削除する
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
212
JDBCでカンタンデータベース連携<応用篇> ―― 221
7
1時限目 データベースアクセスを効率化しよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 222
日
2時限目 データベースの構造情報を参照しよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 234
3時限目 データベースからデータをダウンロードする ・・・・・・・・・・・・・・・・・・・・ 244
8
日
サーブレット技術の基本的な構造を学ぼう ― 253
1時限目 おぼえようサーブレットの基本 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 254
2時限目 HTMLからサーブレットを呼び出そう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 266
3時限目 サーブレットから外部リソースを扱ってみよう ・・・・・・・・・・・・・・・・・ 278
@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e
@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e
h?
h?
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
9
JavaBeans導入でWeb開発の効率化 ――― 291
10
カスタムタグ、フィルタによる開発・運用の効率化 ―― 329
第
1時限目 サーブレットからJavaBeansを呼び出そう ・・・・・・・・・・・・・・・・・・・・ 292
日
第
2時限目 JavaBeansからサーブレットにデータを渡そう ・・・・・・・・・・・・・・・ 306
3時限目 JSPからJavaBeansを呼び出そう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 320
日
1時限目 タグライブラリを利用しよう
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
330
2時限目 オリジナルのタグを作成してみよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 342
3時限目 フィルタでログ収集をしてみよう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 356
付録 ――――――――――――――――― 367
C
練習問題の解答
368
索引
414
O
L
U
M
N
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
Apacheを再起動するには ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ xxii
Tomcatを再起動するには ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ xxix
サンプルをとにかく動かしたい人のために ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ l
変数の命名規則 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 19
セッションの使い方 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 26
エラー画面のカスタマイズ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 27
コンストラクタ
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・95
JavaAPIドキュメント・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 103
例外をスローする ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 118
パッケージは階層構造ではない ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 128
Jakarta OROのインストール
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
133
拡張フォルダの調べ方 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 168
MySQLで文字化けしてしまう場合 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 243
関連書と関連Webサイト
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
265
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@@@@@@@
@@@@@@@@ ?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@ ?@@@@@@@@
?@@@@@@@@
e?
e?@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e
h?
h?
h?
h?
h?
h?
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
第 日
@@
@@
@@
@@
@@
@@
@@
@@
JSPの基本的な構造を学ぼう
1時限目:おぼえようJSPの基本
2時限目:繰り返し処理を構築してみよう
3時限目:フォームからの入力を受け取ろう
4時限目:繰り返し処理を構築してみよう
2
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
1
@@
@@
@@
@@
@@
@@
@@
@@
1
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
JSPはHTMLの中に断片的なJavaプログラ
ムを埋め込んでいく形式の簡易なサーバサイド
処理環境です。Javaベースというと、とかく
オブジェクト指向やらクラスやらの幻影に、腰
の引けがちな方もいるかもしれませんが、JSP
ではそうした難しい概念を意識する必要はほと
んどありません。JSPだからといって、これま
でとまったく違うしくみととらえるのではな
く、あくまで静的なHTMLの延長線上に、ダイ
ナミックなしくみを付加したものと思えばいい
でしょう。出力されるのは、あくまでHTMLな
のですから、出力との比較でソースを眺めてい
くと、すんなりと頭の中に入ってくるはずです。
まずは動かすこと、そして、自分の目で確かめ
ることを大事にしてください。
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@g
?@@
@@@@@@@@
?@@@@@@@@
@@@@@@@@ ?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@ ?@@@@@@@@
第
1
1
まずは簡単なJSPプログラム「intro.jsp」を書いてみましょう。
日
時
限
目
︻
J
S
P
の
基
本
的
な
構
造
を
学
ぼ
う
1
お
ぼ
え
よ
う
J
S
P
の
基︼
本
2
今回作成する例題の実行画面
「10日間 、がんばりましょう!」
の文字が表示されます
サンプルファイルは
こちら
jsp10sample
day01-1
intro.jsp
● このレッスンのねらい
あまり難しく考える必要はありません。とりあえず、本に書いてあるとお
りにコードを打ち込んでみてください。単純なタイピング作業だと思われる
かもしれませんが、最初のうちは思いもよらぬミスがあるものです。ただ単
純に添付のファイルをコピーするのではなく、「自分で書く」という作業が
大切です。
第1日/1時限目●おぼえようJSPの基本
操作手順
1
テキストエディタで新規文書を作成し、次ページの「リスト」の
コードを入力する
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
ヒ ン ト
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
コードを入力
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
2
入力できたら、「jsp10/day01-1」フォルダに「intro.jsp」と
いう名前で保存する
3
ブラウザで URL を「http://localhost/jsp10/day011/intro.jsp」と指定し、正常に動作しているかどうか確認する
@@
@@
@@
@@
@@
@@
@@
@@
本書では、ソース編集
用のエディタとして
「秀丸」を採用してい
ますが、Windows な
らば「メモ帳」、Linux
なら「Vi」のような標
準のテキストエディタ
を使うことも、もちろ
ん可能です。
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@
?@@@@@@@@
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
P2の図のように表示されれば、成功です。
ヒ ン ト
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
万が一、エラーが発生
してしまった場合は、
スペリングミスがない
か、<%∼%> の間に
全角スペースを使って
いないかなどをもう一
度確認してみましょ
う。
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
3
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@
?@@@@@@@@
記述するコード
[リスト:intro.jsp]
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
メ モ
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
行番号をふっていない
行は、誌面の都合で改
行してあるだけなの
で、実際に入力する際
は前の行に続けて入力
してください
(以下同)
。
@@
@@
@@
@@
@@
@@
@@
@@
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@ ?@@@@@@@@
?@@@@@@@@
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
メ モ
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
本 書 の コ ー ド は
Windows 用のものを
ベースにしています。
Linux 用のソースでは
文字コードの指定など
一部異なる箇所があり
ますので、注意してく
ださい。以降も同様で
す。
@@
@@
@@
@@
@@
@@
@@
@@
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
1 <%@ page contentType="text/html;charset=Shift_JIS"
%>
処理を指定するディレクティヴ
2 <html>
3 <head>
4 <title>10日間、がんばりましょう!</title>
5 </head>
6 <body>
7 <% out.print("<p>10日間、がんばりましょう!</p>"); %>
8 </body>
Javaで書かれたスクリプトレット
9 </html>
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
解説
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@ ?@@@@@@@@
1
ページの動作を設定するディレクティヴ
まずは、1行目に注目してみましょう。
1 <%@ page contentType="text/html;charset=Shift_JIS"
%>
このような一文があるはずです。これが「ディレクティヴ」、または、日本語で
「指令」と呼ばれる、JSPを構成する要素の1つです。
「ディレクティヴ」はその名の
とおり、JSPページの処理方式をJSP/サーブレットコンテナ(本書ではTomcatです)
に伝えるためのしくみです。
<%@ ディレクティヴ名 属性名1="属性値1" 属性名2="属性値2"...
%>
属性値は数値か文字列かに関係なく、かならずダブルクォーテーションで囲まなけ
ればなりません。また、ディレクティヴ名、属性名、また文字属性である場合は属性
値についても、大文字、小文字が区別されますので、注意してください。
JSPの「ディレクティヴ」には、いくつか種類がありますが、よく使用されるもの
について、以下に挙げておくことにしましょう。
ディレクティヴ
page
include
taglib
4
概要
ページの処理方法を決める
外部ファイルをインクルードする(第4日3時限目で紹介)
タグライブラリを使用する(第10日1時限目で紹介)
第1日/1時限目●おぼえようJSPの基本
2
ページの処理方法を決めるpageディレクティヴ
「ディレクティヴ」はそれぞれに非常に有用で、かつよく使用される機能を
提供しますが、その中でも、pageディレクティヴは、その名のとおり、ページの処理
自体を制御するというその機能上、もっとも頻繁に使用されるディレクティヴです。
たとえば、intro.jspの1行目、
1 <%@ page contentType="text/html;charset=Shift_JIS"
%>
では、このページがHTMLファイルを出力し、文字コードがShift_JISであることを宣
言しています。JSPページが出力する文字コードのデフォルトは「ISO-8859-1(Latin-1)
」
という欧米系のものであるため、JSPページで日本語を扱う場合には、この宣言は必
須です。もしも、pageディレクティヴで正しい文字コードが指定されていない場合、
出力はこのように文字化けしてしまいます。
pageディレクティヴで正しい文字
コードを宣言しなかった場合
pageディレクティヴは同一ページ内で複数指定することもできますが、原則、同じ
属性を2回以上指定することはできません(一部例外はありますが、後述します)
。
つまり、
<%@ page buffer="none" %>
<%@ page contentType="text/html;charset=EUC-JP" %>
はOKですが、
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ page contentType="text/html;charset=EUC-JP" %>
は不可ということです。
5
また、その性質上、ソースの可読性という観点から、できるだけページの先頭に記
述するほうが見やすく、好ましいでしょう。
contentType属性のほかにも、pageディレクティヴには、多くの属性が用意されて
います。以下、これら属性群を簡単にご紹介しますので、ざっと目を通してみてくだ
さい。今の段階で全部おぼえる必要はありません。こんなものがあるのか、ぐらいの
気持ちで結構です。
(1)contentType
コンテンツの種類と文字コードを指定します。
解説②でもご紹介したように、日本語を扱う場合には、日本語系の文字コードを指
定しなければなりません。一般的にWindows系のOSでは「Shift_JIS」
、Unix系のOS
では「EUC-JP」を使用します(本書内のサンプルはこれに準じます)
。
デフォルトは、
「text/html; charset=ISO-8859-1」です。
(2)buffer
バッファサイズを指定します。
JSPは動的にページを生成し、出力します。その際、処理内容をいったん「バッフ
ァ」と呼ばれるサーバ内の記憶空間に蓄積しておき、一定量データが貯まったところ
でブラウザ(クライアント)に出力します。
バッファ処理は出力効率を向上させる
処理の途中でも、少しずつ
データを運ばなくちゃいけ
ないから、とても大変!
何とかならないかな…
Tomcat+Apache
バッファ処理を行わない場合
バッファ処理を行った場合
クライアント
バッファを使えば、ある程
度データがまとまったとこ
ろでまとめてデータを運べ
る。だから、出力の労力を
節約できる。
バッファ
バッファにデータを蓄積しない場合に比べて、サーバ −クライアント間のやりとり
の回数が抑えられるため、処理効率が高められるのです。
ただし、処理に時間がかかるページなどでは、一定の処理が終わるまで、サーバか
らデータが送信されないため、ユーザの体感速度としては悪化する場合があります。
そこで、バッファとして確保する容量(サイズ)を調整することで、処理効率と体感
速度とを最適化する必要があるのです。
6
第1日/1時限目●おぼえようJSPの基本
デフォルトは「8」KB(キロバイト)です。もしも値として「none」を指定した場
合には、データはバッファに蓄積されることなく、処理されたものから順番にブラウ
ザ(クライアント)に送り出されていきます。
(3)autoFlush
(2)では、バッファ処理についてご紹介しましたが、JSPページから出力されたデー
タ量が指定されたバッファサイズを超えた場合に、これを自動的にブラウザに出力す
るか、あるいは、
「データが容量を越えました!」とエラーにするかを指定するのが、
このautoFlush属性です。バッファサイズを超えた場合に自動的にブラウザに出力
(フラッシュ)する場合にはtrue、エラーとする場合にはfalseとします。
その性質上、かならずbuffer属性とあわせて使わなければなりません。
<%@ page buffer="16" autoFlush="false" %>
この場合、バッファサイズを16KB確保しますが、もしもJSPページが16KBを超え
て、データを出力しようとした場合、エラーとします。開発過程で、ループ(繰り返
し)処理などを含むページにおいて、意図しない無限ループに陥ってしまうのをあら
かじめ防ぎたい場合などには、このような指定が有効でしょう。
デフォルトは「true(自動出力を行う)
」です。
(4)import
JSPでは、Javaにあらかじめ用意されている、またはサードベンダが提供する(自
分が作成したものも含め)クラスモジュールを自由に使うことができます。クラスに
ついては、第3日で詳しく学習することにしますが、今はさまざまな機能が詰まった
道具箱とでも思っておいてください。
import属性は、JSPページ内であらかじめどのクラスモジュールを使うのかを指定
しておくためのものです。たとえば、以下のように記述した場合、このJSPページ内
では日付を操作するための「java.util.Date」というクラスを使えるようになります。
<%@ page import="java.util.Date" %>
import属性は、pageディレクティヴの中で唯一複数回にわたって宣言することので
きる属性です。JSPページ内で複数のクラスを使いたいという場合には、
<%@ page import="java.util.Date,java.io.File" %>
のように、クラス名をカンマ区切りで記述することもできますが、
7
<%@ page import="java.util.Date" %>
<%@ page import="java.io.File" %>
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
ヒ ン ト
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
javax.servlet,
javax.servlet.jsp,
javax.servlet.http は
いずれもJSPの基本的
な機能を含むクラス群
です。
@@
@@
@@
@@
@@
@@
@@
@@
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
のように、複数のimport属性で記述することもできます。
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
複数のimport属性が同一ページ内で記述された場合、これだけは最終的にすべての
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
総和として判断されることになります。
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
デフォルトは、
「java.lang.*, javax.servlet.*, javax.servlet.jsp, javax.servlet.http.*」と
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@ ?@@@@@@@@
なります(つまり、必要なクラスはあらかじめデフォルトでインポートされるという
わけです。java.lang.*は、java.langというグループに属するクラスすべてを表します)
。
(5)isThreadedSafe
isThreadedSafe属性は、JSPページの同時実行を許すかどうかを宣言します。
そもそもJSPページは、Web上で不特定多数のユーザからアクセスされるというそ
の特性上、同時に同一のファイルにアクセスされる可能性があります。
通常の場合、同時に処理を行ってもまったく問題ありませんが、たとえば、ある特
定のファイルに対して書き込みを行うというような場合、同時に処理を行うことで、
データに矛盾が発生してしまう可能性があります。
これを防ぐのがisThreadedSafe属性なのです。
同時処理は矛盾が発生することがある
aは1だ!
aは5よ!
1つのファイルに対して、同時に
データを書き込むことで、矛盾が
生じてしまう。それを防ぐのが
isThreadedSafe属性なんじゃ。
<%@ page isThreadedSafe="false" %>
のようにしておくことで、同時に処理が行われることはありません。
8
第1日/1時限目●おぼえようJSPの基本
矛盾を防ぐには、データを交通整理する
はい、いらっしゃいませ。
こちらですよ。
Tomcat+Apache
最初のリクエスト
次のリクエスト
あ、ちょっとお待ちください。
今、ご案内しますので…
かならず一度に1つの要求しか受
け取らないことで、データの整合
性を図っとるんじゃな。
ただし、当然、あとから来た要求のほうは、最初に来た要求の処理が終了するのを
待たなければならないわけですから、全体的な処理パフォーマンスとしては悪化しま
す。あくまで、データの矛盾回避を目的とした設定であるということは意識しておき
ましょう。
デフォルトは「true(同時処理を許可する)
」になります。
(6)session
セッション処理の有効、無効を指定します。
セッションとは、ユーザがある一連のアプリケーションにアクセスを開始してから
終了するまでの一連の単位をいいます。開始のタイミングでユーザIDやパスワードを
入力するようなアプリケーションがありますが、この作業を「ログイン」といい、ロ
グインを必要とするアプリケーションでは、このログイン作業をもってセッションが
開始されたことになります。
アプリケーションなどを構築するうえでは、このセッションという単位に共通する
情報を管理することが少なくありません。たとえば、ログインが必要なシステムにお
いては、ログインの是非、ログインユーザのIDなどといった情報は、全ページにおい
て共有される必要があります。このようにセッション共通に保持されるべき情報を、
一般に「セッション情報」といいます。
従来のCGI(Common Gateway Interface)などでは、
「セッション情報」を保持す
るために、ページ間で情報を授受するしくみを自分で構築する必要がありました。こ
の方法は、セッション情報として保持すべきデータが多くなってきたときに、開発者
に煩雑な作業を強いることになります。
このセッション情報を、JSPコンテナ(Tomcat)側で自動的に管理させるかどうか
を決めるのが、session属性なのです。session属性をtrueに指定した場合、JSPコンテ
ナはセッション情報を管理します(詳細については、P26のコラムでご紹介すること
にしましょう)
。
ただし、JSPを使うからといって、セッション情報の管理が必須であるとは限りま
せん。むしろ、簡単なアプリケーションならば、セッション情報に頼らなくても、十
9
分なしくみを構築できる場合がほとんどです。そのような場合は、セッション機能を
無効(session属性をfalse)にしておくことで、セッション管理にかかるリソースを節
約するのが好ましいと言えます。
<%@ page session="false" %>
なお、session属性のデフォルトは、
「true(セッションを管理する)
」です。
(7)isErrorPage
JSPページでなにかしらのエラーが発生した場合、JSPコンテナはデフォルトで用意
されたエラーページを表示します。たとえば、以下のようにです。
Tomcatのデフォルトエラーペー
ジ
しかし、このエラーページを用途に合わせてカスタマイズしたいという場合、
<%@ page isErrorPage="true" %>
のようにします。これで、現在のJSPページはエラーが発生したときに表示されるペ
ージとして認識されることになります。
もちろん、isErrorPage属性のデフォルトは「false」
(エラーページではない)です。
(8)errorPage
(7)でご紹介したエラーページは、その性質上、直接呼び出されることはありませ
ん。かならずある特定のページがあり、そのページでエラーが発生して初めて自動的
にエラーページにジャンプしてくることになります。
その通常のページとエラーページとを結び付けるキーとなるのが、errorPage属性
です。
<%@ page errorPage="err.jsp" %>
たとえば、test.jspで上のように指定することで、test.jspでエラーが発生した場合に
は、自動的にerr.jspにジャンプします。もちろん、err.jspにおいては、isErrorPage属
性がtrueとして指定されている必要があります。
10
第1日/1時限目●おぼえようJSPの基本
エラー発生時に自動的にerr.jspが
表示される
エラーページカスタマイズに関しては、P27のコラムで紹介することにします。
(9)info
JSPページの情報(作者や作成年月日、機能概要など)を記述します。
ここで記述された内容は、getServletInfoメソッド(命令)で取得することができま
すが、本書では割愛することにします。
(10)language
JSPページ内で使用できる言語を指定します。
将来的に、JSPページ内で使える言語を自由に選択できるようになった場合のため
に用意された属性ですが、残念ながら、現在JSP1.2の仕様においてJSPページ内で使
える言語はJavaしかありません。
デフォルトの値も「java」となっていますので、今は気にする必要もないでしょう。
(11)extends
さきほど、Javaには道具のたくさん詰まったクラスという概念があるというお話を
しました。JSPページでは、このクラスの機能を自分自身のものとして、拡張(改造)
することができるしくみがあります。
それが、このextends属性を用いて実現される「継承」という概念ですが、やや特
殊な使い方でもあるため、本書では割愛することにします。
3
文字列を表示する
一番基本的な文字列の表示は、7行目で行っています。
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@@@@@@@
@@
@@h?
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
7 <% out.print("<p>10日間、がんばりましょう!</p>"); %>
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
7行目は「<p>10日間、がんばりましょう!</p>」という文字列を出力しなさい、
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
ということを意味しています。初めて登場したプログラム部分ですが、なにも恐れる
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
ことはありません。
ヒ ン ト
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
プログラム自体は<%∼%>で囲んだ中に記述します。<%∼%>の中に記述された
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
<%∼%> はスクリプ
ティングデリミタと呼
ばれるもので、静的な
HTML 部分と動的な
JSPのプログラミング
部分を区切る境界線の
役割をします。
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
Javaのプログラムは、簡易なプログラム(script)の断片(-let)ということで「スク
リプトレット」と呼ばれます。
11
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@
?@@@@@@@@
1つのスクリプトレットは1つ以上の命令文から構成され、1つの命令文はかなら
ず「;」
(セミコロン)で終わらなければなりません。
outはスクリプトレット内でなんの前提もなしに使用することのできる「暗黙オブ
ジェクト」と呼ばれるもので、ブラウザ(クライアント)に出力する一連の機能を提
供します。printはoutオブジェクトに属するメソッド――いわば、outオブジェクトと
いう道具箱の中に用意された道具の1つだと思っておけば良いでしょう。
オブジェクトは道具を提供する
オブジェクトはいろんな道
具が詰まった道具箱。たと
えば、outオブジェクトは
出力のためのさまざまな道
具を含んでおる。
オブジェクト
さきほどのクラスと概念の重なるところがありますが、ここではまずは似たような
@@@@@@@@e?
@@@@@@@@e?@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e
@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
@@@@@@@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@h?
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
ヒ ン ト
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
文字列とあわせて、改
行文字の出力が必要で
ある場合には、print
メソッドの代わりに、
printlnメソッドを使用
します。これから頻出
しますので、併せてお
ぼえておきましょう。
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
文字列はかならずダブルクォーテーションで囲むのを忘れないでください。
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
printメソッド
構文
概要
out.print(文字列)
指定された文字列を出力する
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@g
@@g
@@g
@@g
@@g
@@g
@@@@@@@@
@@@@@@@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
@@
ものだと思っておいてください。
?@@
?@@
?@@
?@@
?@@
?@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@
?@@@@@@@@
?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@e?@@@@@@@@?e@@@@@@@@ ?@@@@@@@@
ここでは、単に固定的な文字列を表示しているだけなので、なかなかJSPで動的に
表示するメリットが実感できないかもしれませんが、今後、この文字列の部分を動的
に変更していくことで、多彩な表現が可能になります。
まずは、その前提として、この場ではスクリプトレットという概念と、文字列の表
示の仕方をきちんとおさえておいてください。
4
JSPで使える暗黙オブジェクト
JSPでは、outオブジェクトのほかに、無条件で使用することのできる暗黙オ
ブジェクトがいくつか用意されています。それぞれに豊富な機能もあり、もちろん、
ここでそのすべてをおぼえる必要はありません。ただ、「このようなものがあるんだ
な」くらいにざっと概観してみることにしましょう。
<JSPで使える主な暗黙オブジェクト>
オブジェクト
application
config
exception
out
pageContext
request
response
session
12
概要
ユーザ間で共有できる情報を管理する
アプリケーションの設定情報を管理する
例外(エラー)情報を管理する
クライアントへの出力を行う
他の暗黙オブジェクトへの参照を管理する
クライアントからの要求情報を受け取る
クライアントへの出力を制御する
セッション内で共有できる情報を管理する
第1日/1時限目●おぼえようJSPの基本
まとめ
●
「ディレクティヴ」はJSPコンテナに対して処理方法を「指令」するためのしく
みです。<%@∼%>で記述します。
●pageディレクティヴはJSPページの処理自体を制御するための宣言を行いま
す。
●JSPページ内にプログラムを埋め込む場合、プログラム部分は<%∼%>で囲ま
なければなりません。<%∼%>で囲まれた部分を「スクリプトレット」と呼びま
す。
●JSPでは、<%∼%>内で無条件に使うことのできる道具箱を提供しています。
これを「暗黙オブジェクト」と呼びます。
●スクリプトレット内の文は、かならず「;」で終了しなければなりません。
●
「暗黙オブジェクト」の1つとしてoutオブジェクトがあります。outオブジェク
トは、クライアントへの出力(表示)機能を提供します。
練習問題
Q
以下の空欄を埋めて、p_intro.jspを完成させてみましょう。
ただし、以下を前提条件とします。
・動作環境はWindowsとします。
・確保されるバッファは8KBとします。
・セッション機能は不要です。
[p_intro.jsp]
1 <%@ [)] contentType="[*]"
[+]="8" session="[,]"
2
isErrorPage="false" %>
3 <html>
4 <head>
5 <title>さあ、力試し</title>
6 </head>
7 <body>
8 [-]
9 [.]("さあ、力試しです")[/]
10 %>
11 </body>
12 </html>
…………………………………………………………………………………解答は巻末に
13