Comments
Description
Transcript
1 - 森北出版
「Web アプリケーション構築入門(第 2 版)」 サンプルページ この本の定価・判型などは,以下の URL からご覧いただけます. http://www.morikita.co.jp/books/mid/084732 ※このサンプルページの内容は,第 2 版 1 刷発行時のものです. URL http://www.morikita.co.jp/soft/84732/ 監修者より 本書 ,青山学院大学理工学部情報 実験Ⅰ 業 教科書 , 代表 開発 意識 , 技術 組合 ,統合 , 能力 求 本 . 取 上 ,総合演習 間 仮想 . 環境 充実 .HTML5 激 変化 状況 当然 ,本書 . Web 開発 取 巻 状況 大 移行 者 途方 暮 重点 置 位置 4 年 経過 , 発刊 側 ,実践的 , 言語 本学科 ,情報工学 基礎 同様 ,応用力 初版 授 . C,C++,Java,PHP , 開始 概念形成 Web 養成 両方 目標 基礎 書 3 年次演習科目「情報 .2002 年度 企画・執筆 MVC 構築 現代 学科 進 , 総称 前 . 側 次世代技術 導入 始 Web 技術 学 , . 変化 学習者 学習 ,本書 . 本書 理的 ,Web 開発 特徴 説明 悩 関 幅広 技術 紹介 文字化 構成要素 問題 , 変化 ,Web 開発 . , 「文字 文字 何 ,原 」 原理的 話 学習者 始 ,Web 具体的 設定方法 確認 解決 . ,幅広 知識 丁寧 ,最良 最後 ,本書 熱心 励 惜 演習授業 具体的 解説 本書 地点 補佐支援 森北出版 塚田真弓氏 心 Web 技術 学 , . 助手,大学院生 礼申 上 皆 , . 2011 年 3 月 監修者 佐久田 博司 i 改訂版について 初版 発行 広 扱 約 4 年 経過 ,本書 書籍 何冊 出版 」 扱 書籍 .初版 不満 , , 部分的 動 「 」 」 大 特徴 表現 ,明確 伝 (形容矛盾!) 採用 . ,本書 改訂 OS 2. 統合開発環境 GNU/Linux(Ubuntu) ,Eclipse 他 扱 例 増 7. XML Twitter API 9. MySQL 言語 文字 10. 郵便番号検索 「創作物 自分 意図 .著者 重視 教材 ,教科書 動 」 原則 方法 紹介 ,Java 他 発生 Ĺ VirtualBox 3.2, 4.0(仮想化 ) Ĺ Apache HTTP Server 2.2( ) ) Ĺ NetBeans 6.9.1(統合開発環境) Ĺ Eclipse 3.5.1(統合開発環境) 利用方法 紹介 . . 採用 PHP . 学習手順 採用 ) . . 挙 対応 ) 管理 . . ,本書 Ĺ MySQL 5.1, 5.5( . . 試 以下 Ĺ GlassFish 3( . . Google Maps Ĺ Firefox 3.6( 導入 採用 関連 新 改 Windows,Mac OS X 例 ,外部 API 改訂版 主 利用 ii . 含 ). 処理 JSON 側 8. (Ajax 一般的 解説 追加 6. HTTP 話題 ,以下 NetBeans ,jQuery 5. Google Maps API , 「幅広 . 開発 現状 対応 3. JavaScript 4. JavaScirpt 限定 . 具体的 内容 , 1. 範囲 . 掲載 , 「実際 話題 幅 問題 遭遇 」 ,動 , 「扱 ,今度 載 完全 制御 守 述 解消 形 ,他 創作活動 振 舞 開発 関係 . 改訂版 Ĺ Java 6 (1.6)( Ĺ PHP 5.3( Ĺ jQuery 1.5.0(JavaScript 言語) 言語) ) Ĺ XAMPP 1.7.3(Windows Ĺ Ubuntu 10.04( ) ) Ĺ Windows XP, Vista, 7( Ĺ Mac OS X 10.6( ) ) 2011 年 3 月 著 者 iii はじめに 本書 急 識 学 ( 人 .以下 該当 Ĺ 基本的 方 気 Ĺ 作 方 知 Java Ĺ Eclipse 統合開発環境 使 Ĺ MySQL 勉強 PHP 情報系 学生. . . 理解 Ĺ . 文字化 MySQL Ĺ 国際化 対応 解決 . 開発 基本 知 作成 . . 使 Ĺ 文字 勧 周辺知 . Ĺ 実践的 例 初歩 ) 基礎 ,総合的 知識 学習 . 要求 . 情報技術(IT) 言語 組 合 使 . 私 , 総合的 演習 . 制作方法 解説 ,残念 ,私 点 不満 Ĺ 動作 OS 情報 少 . 文字 膨大 参考文献 . . 限定 Ĺ . . 人 Ĺ 開発環境 貧弱 ,HTML 等 規格 対 用意 不満 解消 , 挙 . 配慮 足 . 文献 読 入門時 , ,参考文献 学習 効率 高 科書 作 拘 1.4 節 説明 .詳 Ĺ 扱 範囲 限定 学 教科書 探 数多 出版 求 ,既存 書籍 次 Ĺ 書籍 扱 . , , 教 . ,本書 ,週末 急 作 ,学 iv 人 .他 入門書 比 多 印象 持 . , 開発 「1 週間 . , 急 同意 考文献 」 思 10 年 .次 —Peter Norvig .本書自体 行 「10 日 学 独習 私 」 3日 話 . 1) 読 ,C 言語 基礎 知 ,参 方 1年 楽 . 質問 要望 ,著者([email protected]) 本書 送 (http://www.morikita.co.jp/soft/84732/) 対応 . ,本書 掲載 公開 . . 2007 年 7 月 著 者 謝辞 Ĺ 本書 執筆 機会 与 青山学院大学 佐久田博司教授(@ajiro) Ĺ 青山学院大学理工学部情報 2005 年 多 学科 2010 年 受講 間違 本書 学生 皆 反映 Ĺ 資料収集 手伝 森誠 ,犯 数 小川武史教授,伊藤一成博士,大野博之 ,松井田有加 ,伊藤 ,矢吹光佑 熊谷朋哉 ,辻賢 ,鈴木功太 田中慶樹 ,株式会社 OPQ ,藤 ,株式会社 ,渡部伸 Ĺ 改訂版 草稿 査読 大門和斗 湯田雅 ,筒井達郎 (@miyayuta) 立一郎 ,渡邉貴志 (@ryuchanchan) (@kxx_srg) ,喜多唯 (@Ortauts) ,田中諒 (@Meaue) , (@ryodas0789) ,向高 (@timwata) ,今田智大 (@tom_k1004) , (@yamo11),松田源立博士 Ĺ 初版 改訂版 両方 査読 齋藤智也 (@hereticreader),和木康祐 Ĺ 作 (@code6119),石川有 (@KOSUKEwwwwwww),辻真吾博士(@tsjshg) 作 方々, 無料 提供 無料 方々, 作 Ĺ 提供 方々 轟木亜紀子 Ĺ 著者 Ĺ 質問 青山学院大学 小嶋敬子 ,狩屋翔 山本努 (皆 実験Ⅰ」 ) Ĺ 初版 草稿 読 ,中川裕 演習科目「情報 聞 遊 森北出版株式会社 塚田真弓 環境 育 家族 Ĺ 執筆活動 以上 方々 感謝 高宗一惠 . . 著者(@yabuki) 1) http://www.yamdas.org/column/technique/21-daysj.html v 目 次 第1章 1 本書 目指 1.1 1.2 本書 読 上 ................................ 1 何 , .................................................................... 注意 3 知識 .............................................................. 5 1.4 本書 意義 ................................................................................... 7 ................................................................................ 11 1.5 1.3 本書 前提 第2章 15 開発環境 構築 2.1 開発環境 概要 ............................................................................. 15 2.2 仮想 構築 .......................................................................... 16 PHP ......................................................... 20 統合開発環境 ............................................................... 22 2.3 Apache HTTP Server 2.4 GlassFish 2.5 第3章 3.1 作成 ....................................................................... 25 30 書 方 ............................................................................. 30 3.2 HTML 入門 .................................................................................. 31 3.3 統合開発環境 利用 .................................................. 34 主 要素 ......................................................................... 35 3.5 HTML Validator ........................................................................... 37 ............................................................................. 42 3.6 3.4 HTML 第4章 上 動作 4.1 JavaScirpt 書 方 ....................................................................... 51 4.2 jQuery ......................................................................................... 52 4.3 JavaScript C 言語 違 ............................................................. 54 JavaScript 動作 調査 ............................................ 55 4.5 Google Maps API ......................................................................... 56 4.4 Firebug vi 51 目 次 第5章 61 通信方式 5.1 HTTP ......................................................................................... 61 ...................................................................... 66 5.2 HTTP 5.3 Twitter API ................................................................................. 71 第6章 76 生成 生成 ................................................................... 77 生成 ................................................................... 82 6.1 Java 6.2 PHP 内容 取得 .................................................................... 83 ................................................................................... 89 6.3 6.4 第7章 92 操作 管理 必要性 .................................................. 92 7.2 MySQL ....................................................................................... 93 7.3 作成 ........................................................ 96 7.1 7.4 MySQL 7.5 ..................................................................... 100 文字 操作 ................................................................................ 101 7.6 phpMyAdmin ............................................................................... 106 7.7 SELECT 文 詳細 ......................................................................... 108 7.8 .............................................................. 110 7.9 ................................................................................ 111 7.10 複数 構成 関数 ....................................................... 126 7.11 MySQL 第8章 権 ........................................................... 129 利用 .................................................................... 130 8.2 8.4 認証 ................................................................................... 138 ........................................................... 143 第9章 9.3 145 実例 .................................................................... 145 9.1 郵便番号 9.2 GET 129 利用 8.1 8.3 ....................................... 114 検索 ........................................................................... 148 検索 ....................................................................... 150 9.4 Google Maps API .............................................. 152 検索 .......................................................... 154 ................................................................. 9.6 Model, View, Controller 155 9.5 Ajax vii 目 次 付録 A C Java 164 A.1 Hello World! ................................................................................ 164 ......................................................................... 166 A.2 A.3 例外 ........................................................................................... 170 ............................................................................... 171 A.4 ........................................................................................ 176 A.5 付録 B 何 ...................................................................... 183 文字集合 使 ............................................................. 184 B.1 文字 B.2 B.3 文字 B.4 索 引 viii 183 文字 統一 ......................................................................... 186 .............................................. 189 利用 文字 192 本書の目指すもの CHAPTER 1 本書 作 方 学 何 .類書 多 疑問 . 作 方 , , .本章 , 学 中 ,本書 意義 答 . . 何 , 1.1 ( 比較 説明 何 .通常 . , 見 図 1.1 ) 上 情報 公開 .情報 作成 , 方法 一 公開 人(制作者) 上 置 . 送信 重要 , , 形式 情報 書 . 要 . 提示 単純 ) 制作者 作 . (以下 , (閲覧者) , 通知 ,閲覧 要求( 求 . , 側 総称) ( ) . リクエスト クライアント (ウェブブラウザ) ウェブサーバ ウェブ ページ ユーザ 図 1.1 上 情報公開 情報 方法 , . 一 , 異 複雑 要求 対 限 公開 閲覧 返 .要求 受 , 可能 , 作 生成 , 返 . 可能 . 図 1.2 動的 生成 .処理 必要 , 格納 1 第1章 本書 目指 クライアント (ウェブブラウザ) ウェブアプリケー ションサーバ データベース ユーザ 図 1.2 一般的 , 一般的 管理 管理 請 負 . 「 」 少 説明 . 構成 (Database Management System, DBMS) 関 , ( ) 例 , . ,今 広 普及 ( 上 ) . 最 重要 次 2点 利点 利用 必要 , 動 簡単 2. 場合 1) 最初 点 特 重要 . 対 問 . , ・ .今日 携帯電話 標準的 形 作成 利用可能 搭載 , 携帯電話 . 欠点 . 速度 ,動作 全体的 遅 接続 欠点 3) 使 貧弱 3. 4) . 上 実装 ,後 Adobe AIR,Silverlight . . , , 1) Java FX . . . 2) 2. OS ,新 , 1. , . 接続 1. 利用 利用 想定 価値 上 .新 学 利用 RIA(Rich Internet Application) 問題 2) 「一度 書 動作 (Write Once, Run Anywhere, WORA) 」 開発 一 理想 , 言語 Java 理想 掲 登場 .皮肉 動作環境 携帯電話 考 ,Java 理想 達成 . ,Java 技術 支 , 理想 達成 当 3) 前 今日 , , 言 . 欠点 . 4) JavaScript 等 解消 2 改善 . 試 続 ,将来 欠点 1.2 本書 読 上 , 修正 , phpMyAdmin 必要 . 上 , 注意 ,7.6 節 管理 遠隔操作 必要 第1章 紹介 操作 人 ,使 . , 「 可能 , 技術 , 間 枠組 限 」 複雑 一般的 用 . 1.1.1 少 話 広 , 考 (World Wide Web, WWW, Web) . 普及 速度 驚異的 場所 .地上 限 ,人類 到達 利用 一 . 利用形態 ,狭義 ,広義 同 意味 . 上 膨大 知識 蓄積 ,日々新 展開 5) 人間 間 . . 知識 蓄積 人間 何 , 価値 . , , 重要 (知識 , 人類 営 重要 要素 学 1.2 本書 読 上 本書 目的 入門書 7) , 重要 構成要素 . ,入門的 扱 脚注 .初 .全体像 把握 把握 ,各章 違 5) . ,初読時 飛 . 掲載 ,人間 含 無視 注意書 先決 冒頭 事柄 , . 」 .「飛 ( . 注意 本書 全体像 )6) . 簡単 分離 活用 対 上 総称 ). ,両者 明確 区別 . 6) 視点 ,検索, .同著者 『Web 情報 ・ , 第 2 版, 2003) 深 考 場合 — 7) 脚注 初 無視 上 —最適 情報 ,Morville『 ・ 旅』 ( ・ , 2006) 参考 構築 論理的 』 ( 方 考 際 必読書 . . 3 第1章 本書 目指 .読 進 ,自分 戻 . 枠 1.2.1 本書 太線 利用 記述 引 際 際 ,以下 四 示 ,利用場面 灰色 背景 , JSP,PHP 黒 側 . . 形式 記述 記述 . . (後述) 操作 . 操作 形式 記述 作業 . . 形式 側 , 使 分 . 書 換 一部 細線 囲 , HTML CSS,JavaScript,Java 背景 , 背景 , 左端 実際 何 . 1.2.2 字体 左上 ,字形 「\」 少変 形 使 他 1.2.3 円記号 区別 違 .本書 ,GNU/Linux Ubuntu 10.04 LTS 上 開発環境 構築 異 可能性 , 「 区別 」 ,設定方法 動作 . 必要 ,Ubuntu 」,Mac 場合 「 9) 本書 執筆時点 Ubuntu 最新 LTS(Long Term Support)版 , 「Ctrl+ 字形 」 .Mac 注意 使 場合 ,本文中 右 , 「 」 別 画像 場合 ,深刻 違 操作 「端末」,Windows 4 本書 形態( 想定 入力 8) ) .日本 通貨記号(円記号「ě」 ) 同 字 形 .他 Mac 多 . Mac ) 「 (使用書体 注意 Windows 本書 斜線 使 , 8) 使 9) 右下 . 」 読 替 円記号 10.10 採用 . . ,10.04 . 期間 特別 長 1.3 本書 前提 本書 URL 中 上 変 資料 紹介 併 URL ,URL 場合 上 見 , 資料 . 検索 際 知識 使 ,資料 第1章 掲載 . 資料 閲覧 検索 ,新 URL .Internet Archive10) 見 資料 . 英語 書 規格文書 参照 .日本語訳 正式 ,利便性 考 規格 日本語訳 ,正式 必要 URL 場合 紹介 ,原文 当 . 1.3 本書 前提 知識 本書 読者 次 前提知識 想定 Ĺ ( 説明 検索 方法 何 ). Ĺ 基本的 操作 ,圧縮 ( 展開 Ĺ C 言語 基本的 文法 知 1.3.1 前提 . 含 .). . C 言語 知識 C 言語 文法 少 詳 説明 . ,C 言語( 本書 前提 文字列 詳 書 知識 必要 ) . 十分 C++ ,K&R Java) 基本的 知識 (知 11) 第 1 章「 . 良 入門」 . 例 挙 . 何 ,値 0 初期化 . int s = 0; 整数型 変数 s 宣言 次 . . int a[] = {1, 3, 5}; a 配列 数 ). 宣言 For 文 ,初期化 .a[2] 値 5 (配列 添 字 0 . 10) http://www.archive.org/ 11) Kernighan 『 言語 C』(共立出版, 第 2 版, 1989) 5 第1章 本書 目指 for (int i = 1; i <= 100; i++) { s += 1; } 変数 s 値 1 以上 100 以下 整数 和 If-Else 文 . . if (s % 2 == 0) { printf("even\n"); } else { printf("odd\n"); } 変数 s 割 2 余 表示 “odd” 0( 割 2 切 ) , “even” . 最後 関数 . int sum(int start, int end) { int s = 0; for (int i = start; i <= end; i++) { s += i; } return s; } ,整数 start 説明 読 和 返 関数 end 意味 (先述 ,本書 K&R 第 1 章 十分 C 言語 学 ,2 読 C 言語 復習 前 入門書 Java Java 6)以降 対応 (Java . ). ,C 言語 ,Java 1.6( . .使 方 読 , 薄 本 選 表現方法 注意 1.5」 「Java 5」,「Java 1.6」 「Java 6」 .「Java ). 知識 1.3.2 Unix Ubuntu Unix 系 Mac 知識 多少 習 」 本書 , 利用 使 操作 意味 準備 「何 , OS . Unix 学習 意識 作業 進 Unix 系 , 大変 学 , 操作 部分 , 挙 入力 .詳 , 使 方 知 検索 . Unix 参照 学 場合 , . 12) http://www.lpi.or.jp/linuxtext/text.shtml 6 ,Unix . 表 1.1 名」 「man 本書 内容 試 際 『Linux 標準教科書』12) 場合 1.4 本書 意義 表 1.1 本書 apt-get 権 chown 所有者 find 検索 冒頭 head 行 変更 変更 表示 LZH 形式 作成・展開 文字 nkf 改行 変換 実行 sh 管理者権限 sudo 実行 編集 vi 1.4 Unix 系 管理 chmod lha 利用 Ubuntu 第1章 ( ) 本書 意義 「 」 述 制作方法 ,私 学 ,次 教科書 点 ,情報系 総合的 演習 探 .候補 不満 感 Ĺ 幅広 話題 扱 Ĺ 開発環境 貧弱 詳 . . 文字 説明 動 . 限定 Ĺ . 書籍 掲載 Ĺ 発展的 事柄 紹介 Ĺ 動作 OS ,HTML 等 規格 対 必 学 人 , 次 対話 CSS. 記述 JavaScript. 処理 記述 Ĺ 蓄積 Ĺ 要素 言語. 13) 管理 合 話題 ,個々 話題 扱 軽 大切 13) 多 入門書 , 以外 , 管理 場面 , 1冊 , . 動 . 方法. 1冊 本 . , 制作 HTML 上 動作 側 . . 画面 記述 Ĺ Ĺ 配慮 足 . 入門課程 修了 Ĺ 書籍 完全 動 形 掲載 学 . ,幅広 話題 扱 管理 ,強力 ,実際 単 書籍 大部分 ,動 保管 役割 .使 担 . 7 第1章 本書 目指 試 形 用途 掲載 向 入門 必要 話題 解説 難 既存 書籍 使 , 向 目標 掲 学習 ,実際 動 ,本書 執筆 ,他 入力 ,指示 目標 , 作 .掲載 手順 動 達成 難 . ,次 言語 知識 足 2. 開発環境 貧弱 非常 複雑 実装 作成 知識 1 番目 問題「 言語 知 Java , 知識 分厚 人 挫折 起 知 ,Java 挫折 抽象度 Java 足 」 知識 必要 Java 買 . . 言語 知 . . 説明 1.4.1 . . 4. 以下 詳 自力 . 設計方法 知 3. , 問題 発生 挫折 ,開発 困難 解決 試 . 問題 段階 1. 5. 文字化 ,入門 . , 詳 ,知識 整理 , 高 勉強 制作 分厚 教科書 教育 ,C 言語 始 , , 現実 言語 知 .実際,今日 , 「C 言語 . . 言語 一 」 ,以下 問題 起 . 作 3 種類 言語 使 (図 1.3). Ĺ 側 利用 言語(Java Ĺ 側 利用 Ĺ 操作 JavaScript. SQL. クライアント (ウェブブラウザ) ウェブアプリケー ションサーバ JavaScript Java (PHP, Perl, Ruby, or Python) 図 1.3 本書 , 一 利用 8 作 側 利用 提案 .C 言語 ). PHP, Perl, Python, Ruby 言語 知 SQL 必要 ,Java . データベース 言語 PHP 制作 人 ,Java 採用 題材 勉強 . Java 分厚 入門教材 教科書 通読 1.4 本書 意義 必要 .Java( , 抽象度 高 言語) 題材 , 最適 補助的 資料 (付録 A 思 14) . 大 問題 ,多 通 読者 JavaScript 手軽 . , . ,時間 余裕 側 処理 本質 ,両者 特徴 . 側 言語 比較的簡単 置 換 他 15) 代用 三 言語 必要 , 大切 ,多 作成 ,適切 選択 言語 制作 . Java . ,実際 ,PHP , 読 進 ,両方 試 , 比 推奨 Java ,PHP 考慮 ,本書 大部分 ,先 述 一方 選 理解 深 開発 読者 .Java 学 , ,Java 使 Java 印象 PHP .本書 章 設 ,Java 試 PHP 仕様 整理 Java 思 Java」 .特 問題 理由 ,Java 一 学 ). 欠点 公開 新 , 「C 参照 使 Java 第1章 . ,SQL , . 言語自体 , 背後 考 方 理解 . 1.4.2 貧弱 開発環境 2 番目 問題「開発環境 貧弱 起 開発環境 発環境 比較 , . 貧弱 ,今日一般的 利用 .早 ,便利 開発環境 , 苦労 」 ,適切 開発環境 与 .一部 入門書 , 利用 同 . ,開発 困難 開発 最先端 電卓 使 ,身 計算能力 身 知識 遠 ,入門書 段階 ,途中 恐 指向 ,Java 14) VPS(Virtual Private Server) 問題 解決 . 言語 形 開 . , 安価 利用 , 動 ,Flash Java , 動 .Java 使 ,Flash ,一部 動作 不安要因 .Google Web Toolkit (http://code.google.com/webtoolkit/) 側 Java 書 試 , 側 JavaScript 使 試 ( JavaScript) ,SQL Java JavaScript 汎用 言語 置 換 . 15) 側 9 第1章 本書 目指 開発 . 本書 ,Java 用 開発 Development Environment, IDE) 有名 Eclipse 強力 NetBeans ,NetBeans 統合開発環境(Integrated 利用 方 .Java 開発 Platform, Enterprise Edition) 最新版 対応 本書 推奨 NetBeans 思 . 読 替 同時 PHP 提供 ,Eclipse 動作確認 ,Eclipse Java EE(Java ,Java Windows,Mac 用 GNU/Linux 言 IDE , 利用 読者 .Eclipse 慣 多 人 ,適宜 . 1.4.3 複雑 実装 3 番目 問題「 実装 設計方法 知 」 起 ,入門書 , 正規化 ) 決 , 拡張 容易 仕方 作成 , 枠組 , , 雑 扱 .入門書 少 大 ,実装 手 負 複 以上 学 扱 人 情報」 , . 多 入門書 事柄 提供 独自 拡張 , 「 ,MVC ,本書 扱 構築 保守, 簡単 . 本書 , 設計方法 ,入門書 最初 .入門書 性格上,手軽 話題 提供 . MVC, 合 , 場合,最初 覚 方法 見方 設計方法( . 簡単 非常 複雑 詳 . 説明 . 一部 ,本文 独立 . 1.4.4 4 番目 問題「 書 仕方 作成 済 .安全 簡単 構築 比 安全」 不可能 . 明 問題 本書 扱 例 難 , , . 使 載 , 「絶対 重大 ,改善策 触 . , 攻撃 ,SQL 10 , 」 ,入門 構築 , 挿入攻撃 固定攻撃 対策 第1章 1.5 16) . 対策 参考文献 紹介 . 1.4.5 文字化 5 番目 問題「文字化 解決 」 ,多 書 文字化 起 , 起 ,失 戻 . 完全 視点 ,文字 ,必 . 過程 文字化 通 固定 . 設定 以外 問題 回避 Windows-31J 統一 UTF-8 確認 , 「 使 ,特 国際化 本書 実践 設 意識 . ,Windows 環境 書籍 多 見 文字 把握 段階 超 文字 ,文字 ,一般 考 文字 , 」 ,文字化 入門書 . 動 本書 一般 ,多 要素 ,利用 . . 省略 常 意識 上 起 解決 失 定 簡単 済 . 設定 変 重大 問題 入門書 文字 立 文字 出会 止 理解 ,適切 深 , 対応 . 1.5 基本 示 学 図 1.4 要素 組 合 実現 最初 強調 確認 クライアント 図 要素 対応 ションサーバ ⑥ Java, PHP ⑤ HTTP 図 1.4 (番号 簡単 説明 データベース ⑦ ⑧ RDBMS SQL 上 見 目 16) ,対策 本書 章 対応 ) (図中 番号 本書 章 対応 , , , . ④JavaScript 形式 章 ウェブアプリケー ③HTML, CSS ユーザ 説明 図 .何 (ウェブブラウザ) Ĺ 第3章 . ,道 迷 , 各要素 . 具体的 CSS 表現方法 学 形式 記述 .表現 ). 情報 ,HTML . (Cross Site Request Forgeries, CSRF) 割愛 . ,簡単 11 ウェブページの書き方 CHAPTER 3 上 見 目 表現方法 学 形式 CSS .表現 記述 情報 .本章 形式 , HTML 二 形式 学 (図 3.1) . クライアント (ウェブブラウザ) ウェブアプリケー ションサーバ HTML, CSS 図 3.1 本書 学 データベース :HTML CSS 3.1 .本書 想定 (Chrome,Firefox,Internet Explorer,Opera,Safari ) , 最新版 , .逆 範囲 狭 ,特定 1) 作 以上 動作 . 3.1.1 Firefox 学習 開発 利用 考 Firefox 最適 . 次 理由 . Ĺ 無料 自由 使 Ĺ . 開発 役立 多 Ĺ 限定 拡張機能 無料 自由 使 . ,GNU/Linux . Windows,Mac 動作 . (http://mozilla.jp/firefox/) Firefox , 1) 本書 扱 快適 使 , 2) 30 2) 先 進 HTML , 搭載 , 工夫 割愛 動作確認 Firefox . 有効 特別 工夫 必要 , .本書 . ,他 . 3.2 HTML 入門 最初 Ubuntu 実行 ,端末 Firefox ,Firefox 第3章 次 最新版 Ubuntu . sudo apt-get update sudo apt-get upgrade firefox 3.2 HTML 入門 HTML(HyperText Markup Language) 使 使 紹介 作 ,次 hello.html ( ) .HTML 一般的 内容 保存 gedit3) ,Windows ,Ubuntu 「.html」 . 帳,Mac 拡張子 「.htm」 . <html> <body> Hello World! </body> </html> 開 Firefox ,“Hello World!” 表示 . 3.2.1 見出 (Heading):h1–h6 hello.html 文字 大 表示 .HTML <body> .<html> 使 性質 記述 言 . 要素名 最初 「/」 呼 . 例 終了 ,<h1> h1 要素 文字 大 .開始 h1 要素 </h1> 表示 終了 大 ,文字 大 ,標準的 上位 見出 . 3) 端末 ,h1 要素 「gedit hello.html」 h1 要素 」 ,最上位 見出 .見出 表 要素 . 後 h1 .文字 大 起動 表示 ,数字 小 h6 要素 上位 h2 要素 要素 . .h1 要素 意味 「最上位 見出 意味 的 , . ,< > 中 名前(要素名) 書 <h1> 語 「Hello World!」 「<h1>Hello World!</h1>」 変 順番 使 一般 h3 要素 使 . . 31 第9章 実例 <?php // 再現 準備 $paramq = ’’; if (isset($_GET[’q’])) $paramq = htmlspecialchars($_GET[’q’], ENT_QUOTES, ’UTF-8’); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>郵便番号検索 </title> </head> <body> <form action="" method="get"> <p> <input type="text" name="q" value=’<?php echo $paramq; ?>’/> <input type="submit" value="search" /> </p> </form> <?php require(’zips.php’); ?> </body> </html> 検索 再現 点 ,検索自体 先 作成 require() 読 込 一度 書 演習: 9.4 検索 取 出 実行 zips.php 点 注目 ( , ,zips.php 同 ). ,zipsform.php 実装 ,動作 確認 . Google Maps API 本節は初読時には飛ばしてもかまいません 郵便番号検索 4.5 節 9.4). , 作 引数 肩 . . 公開 組 合 関数 公開 乗 住所 与 目指 呼 出 記述 , 5) 問題 class 属性 . 利用 関数 drawMap() , ,検索結果 表示 (4.2.2 項 参照) . 側 処理 ,PHP 簡単 ( 側 )側 可能 割愛 実現 “address” ,結果 現 主要部分 以下 掲載 実装例 4.5.2 項 作 際 ,住所 部分 ,$(".address:first").text() 住所 使 新 , 場所 地図 表示 addressmaps.js 住所 取 出 5) 本節 紹介 技術 使 , (図 Google Maps .世界中 ,巨人 152 紹介 . 実装 . .5.2.2 項 . 最初 紹介 第9章 9.4 Google Maps API zipsform.jsp 154 search zipsform.jsp?q=154 zipsform.jsp?q=154 154 search 154 search 検索結果 検索結果 <td class='address'> 東京都... <td class='address'> 東京都... </td> </td> 1. ボタンが押されると 3. 結果をJavaScriptで読み取り 2. 画面が遷移する 4. 地図を表示する 図 9.4 郵便番号検索 Google Maps Google Maps <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> html, body { height: 100%; } td { font-size: smaller; } </style> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("jquery", "1.5.0"); </script> <script type="text/javascript" src="addressmaps.js"></script> <script type="text/javascript"> $(document).ready(function() { var address = $(".address:first").text(); drawMap(address); // 地図 生成 }); </script> Google Maps API </title> <title>郵便番号検索 </head> <body> <form action="" method="get"> <p> <input type="text" name="q" value=’<%= paramq%>’/> <input type="submit" value="search" /> </p> </form> <div id="map_canvas" style="float: right; width: 50%; height: 90%;"></div> <jsp:include page="zips.jsp" /> </body> 演習:上述 zipsmap.jsp Google Maps 実装 ,動作 確認 zipsmap.php . 作成 ,郵便番号検索 .実行結果 図 9.5 . 153 第9章 実例 図 9.5 郵便番号検索 9.5 実行例 Google Maps 検索 Ajax 本節は初読時には飛ばしてもかまいません 作成 郵便番号検索 生成 . 操作 地図 使 技術 1 文字入力 , 問題 , 通信 行 . ,郵便番号 , 遷移 大 遷移 .JavaScript 送 . .郵便番号検索 更新 使 ,何 使 ,Google Maps 内容 戻 遷移 , Ajax 押 新 押 6) , Ajax ,検索結果 使 , 地図 遷移 総称 . 更新 .目標 . ,図 9.6 ウェブアプリケー 154 ションサーバ 検索結果 <td class='address'> 東京都... Google Maps 1. テキストボックスが変化すると、 2. 検索結果だけが更新され、 3. 地図も更新される </td> (画面は遷移しない) 図 9.6 Ajax 次 6) 実 使 154 手順 実装 検索(図 9.4 比較 ) . Google Maps 登場以前 , 遷移 . 地図 . 更新 ,JavaScript Google Maps 示 索 引 記号 ’ 41 ” 41 .NET 13 ¡ 41 & 41 & 41 ' 41 > 41 < 41 " 41 \ 4 ě 4 @Override 180 A a 32, 190 ABS 127 Accept 62 Accept-Charset 62 Accept-Encoding 62 Accept-Language 62 Accept-Range 64 ACID 125 ACOS 127 ADDDATE 127 Adobe Reader 184 Adobe-Japan1-5 184, 185 Adobe-Japan1-6 184 Ajax 154 ajax 131 AJP 162 alt 36 ALTER TABLE 99, 113 ANALYZE 111 166 API 仕様 192 application 159 ArrayList 172 Arrays 175 ASCII 183 表 81 ASCII ASIN 127 ATAN 127 AUTO_INCREMENT 99, 137 AUTOCOMMIT 125 AVG 124, 128 B background-attachment 46 background-color 45, 46 background-image 46 background-position 46 background-repeat 46 Berners-Lee, Tim 39 BIT 99 BIT_COUNT 128 BLOB 99 blockquote 36 body 39 BOM 146 border 47 border-collapse 46 border-color 46 border-style 34, 46 border-width 45, 46 br 36 BuddhistCalendar 170 button 54 C Calendar 170 caption 34 CASE 126 catch 171 CDATA 51 CEIL 127 CHAR 99 CHAR_LENGTH 126 characterEncoding 189 CID 184 class 43, 45 clear 46 click 54 CMap 184 Collections 175 color 45, 46 COMMIT 125 Comparable 181 Comparator 181 compare 181 CONCAT 126 Connector/J 131, 189 content 46 Content-Encoding 64 Content-Length 64 Content-Type 64 contentType 79 Cookie 62, 91 COS 127 COT 127 COUNT 128 CP932 188 CR+LF 145 CRC32 127 Create HTTP 62 SQL 102 索 引 CREATE DATABASE 96 CREATE TABLE 98 CRUD HTTP 62 SQL 101 CSRF 144 CSS 42 CSS3 47 CSV 146 CURRENT_DATE 27 CURRENT_TIME 127 CURRENT_TIMESTAMP 127 cursor 46 cut 118 5 C 言語 D DATE 99 Date 64 DATEDIFF 127 DateFormat 170 DATETIME 99 DB2 96 DBMS 92 DCL 125 dd 32 DDL 125 DECIMAL 99 DEFAULT 99 DEGREES 127 DELETE 62, 106 HTTP 62 SQL 106 Derby 96 DESC 98, 109, 124 DESCRIBE 98 139 DIGEST 認証 display 46 DISTINCT 108 DIV 127 div 45 dl 32 DML 125 Dojo 52 DOUBLE 99 DROP DATABASE DROP TABLE 98 dt 32 97 E Eclipse 24 em 37 41 em encodeURI 65 encodeURIComponent 65 41 en 114 ER 図 escape 65 ETag 62, 64 EUC-JP 183 EXP 127 EXPLAIN 112 EXTRACT 127 F finally 171 find 7, 167 Firebird 96 Firebug 55 Firefox 30 FLOAT 99 float 46 FLOOR 127 font 43 font-family 46 font-size 43, 45, 46 font-style 45, 46 font-weight 46 FORMAT 128 FULLTEXT 112 function 55 G Geocoder 59 GET 62 GlassFish 24, 78, 161, 187 GNU/Linux 15 Google Maps API 56 Google Web Toolkit 9 GRANT 129 Greasemonkey 51 GREATEST 127 GregorianCalendar 170 group 167 GROUP BY 108, 124 Guest Additions 19 H h1–h6 31 HashMap 175 HashSet 174 HAVING 109, 124 head 7, 39, 187 height 46 HEX 126 Host 62 href 190 HTML 31 html 39 HTML Validator 37 HTML5 35, 40, 75, 187 HTTP 61 HTTPS 139 HttpSession 89 HttpURLConnection 69 HTTP 61, 66 Java 69 70 PHP HTTP 62 HTTP 61 63 HTTP I IANA 187 id 45 IDE 10 IF 126 If-Modified-Since 62 If-None-Match 62 img 36 import 79 193 索 引 INDEX 112 Ingres 96 InnoDB 116, 125 INSERT 102 INSERT IGNORE 103 INT 99 INTEGER 99 Integer 85 INTO OUTFILE 110 ISO-2022 183 ISO-2022-JP 183 ISO-8859-1 183 ISO/IEC 10646 184 isset 87 Iterator 174 J Java EE 13 JavaScript 8, 51, 60, 179 JavaServer Pages 78 JDBC 131 JDK 22 JIS X 0201 183 JIS X 0208 184 JIS X 0212 184 JIS X 0213 184 JIS X 0221 184 184 JIS 漢字 186 JIS 参照文字 join 118 jQuery 60 JSON 55 JSONP 75 JSON 処理 JavaScript 74 73 PHP JSP 78, 156 K K&R KEY 5 112 Latin 1 183 LEAST 127 LEFT 126 LF 145 li 33 LIMIT 147 LinkedList 173 Linux 15 List 173 list-style-image 46 list-style-type 32, 46 LN 127 LOCATE 126 Location 64 LOG 127 LONGBLOB 99 LONGTEXT 99 M Map 175 margin 46, 47 Matcher 167 MAX 128 MD5 128 MEDIUMBLOB 99 MEDIUMTEXT 99 MIN 128 MOD 105, 127 Mono 13 Monolithic JSP 156 MooTools 52 MVC 156 MyISAM 116 MySQL 93 mysql 95 MySQL Connector/J 131 mysqldump 111 MySQLi 135 MySQL 拡張 135 L 194 OAuth 138 ol 33 ON DUPLICATE KEY 103 OpenID 138 OpenType 184 OPTIMIZE 111 Oracle 96 ORDER BY 109, 124 out 80 P p 32 padding 46, 47 page 159 pageEncoding 79 79 page PATH 94 Pattern 167 PDO 135, 189 PDT 24 PEAR 70 PEAR DB 135 PEAR MDB 135 PEAR MDB2 135 PHP 82 phpMyAdmin 106 PI 127 POJO 156 position 46 POST 62 PostgreSQL 96 POWER 127 pre 36 PRIMARY KEY 99 Prototype 52 PUT 62 Q q 36 R N LAMP 13 Last-Modified O 64 NetBeans 23 NOT NULL 98 NULL 98 RADIANS 127 RAND 127 rawurlencode 65 RDB 93 索 引 RDBMS 93 Read HTTP 62 SQL 103 ready 53 Referer 62 REPEAT 126 REPLACE 126 replaceAll 135 request 159 REST 161 RESTful 161 REVOKE 130 RFC 65 RFC 1149 65 RFC 2616 61, 65 RFC 3986 65, 191 RFC 4395 65 RFC 5321 61, 65, 169 RGB 45 ROUND 127 Ruby on Rails 13 S SELECT 103, 108 Senna 112 Server 64 Servlet 77 session 159 Set 174 Set-Cookie 64 SHA1 128, 138 Shift_JIS 183 show 54 SHOW DATABASES 96 SHOW TABLES 98 SIGN 127 SIN 127 SOURCE 111 span 43, 45 SQL 8, 100 SQL Server 96 SQL-92 99 SQLite 96 SQL 143 SQRT 127 src 36 static 165 STDDEV 128 STDDEV_POP 128 STDDEV_SAMP 128 str_replace 137 StringBuilder 166 strong 37 style 43 SUBSTR 105, 126 SUBSTRING_INDEX 126 SUM 124, 128 HTTP 62 SQL 105 URI 64, 191 urlencode 65 URLEncoder.encode 65 URL 65, 190 URN 64 USE 97 User-Agent 62 UTF-16 183, 186 UTF-8 183, 186 UTF-8N 145 V T table 34 TAN 127 td 34 TEXT 99 text-align 45, 46 text-decoration 46 th 34 this 177 TIMEDIFF 127 TIMESTAMP 99 Tomcat 187 toString 81 tr 34 TRIM 126 TRUNCATE 106, 127 try 171 Twitter API 71 U Ubuntu 18 UCS 184 ul 33 UML 図 176, 180 UNHEX 126 Unicode 184–186 Unicode 値 184 Unix 118 UPDATE 105 VAR_POP 128 VAR_SAMP 128 VARCHAR 99 VirtualBox 16 visibility 46 VLOOKUP 118 W W3C 49 WAR 162 Web 3 width 45, 46 Wikipedia 190 Windows-31J 11, 183, 188 WORA 2 World Wide Web 3 WWW 3 X X-HTTP-MethodOverride 131 XHTML 39 XHTML 1.0 Strict XMLHttpRequest2 XML 処理 Java 72 39, 40 XML 宣言 39 75 195 索 引 XSS 143 実体関連図 楷書体 終了 145 185 外部 117 外部 制約 111 隔離性 125 可視性 176 箇条書 32 画像 36 仮想 15 Y YSlow 60 YUI 52 Z z-index 改行 46 行 94 人名用漢字 114 基底 50 管理 権 欄 暗黙 異体字 180 184 教育漢字 93 129 177 191 180 156 80 強調 高 184 数値文字参照 41 数独 100 93 挿入攻撃 143 159 42 44 89 63 128 116 180 30 166 170 143 45 144 178 111 112, 145, 継承 正規化 180 45 Java MySQL 整形済 139 固定攻撃 125 JSP — SQL 3 49 30 98 171 179 125 宣言 156 操作 176 送信 68 36, 41, 176 175 175 45 行 4 属性 180 176 85, 86 88 180 77 55 親 180 式 行 改行 196 字形 36 42 44 81 4 110 円記号 177 79 49 1 永続性 139, 143 1 標準 166 103 36 89 188 1 115 正規表現 177 125 康煕字典 185 構造体 176 国際文字集合 184 子 180 原子性 146 引用 36 引用符 36, 41 要素 3 85, 80 37 185 91 45, 176 暦 185 125 一貫性 色 114 31, 36, 40 主 制約 99, 111 常用漢字 184 書体 185 字体 81 184 184 行 第 1∼4 水準漢字 高島屋 185 31 184 索 引 終了 31 段落 32 111 67, 85 直積 4 118 185 吉 JSP MySQL 188 mysql PHP Wikipedia 190 65, 190 68 67 47 43 128 非推奨要素 演算 非表示 49 187 100, 188 188 68 156 156 189 表 型 MySQL 99 1, 96 削除 97 作成 96 利用 97 管理 92 34 標準偏差 190 183 128 176 66 160 文字参照 41 文字実体参照 文字集合 43 184 符号化文字集合 184 41 184 30 符号化方式 156 行 51 112 179 93, 削除 作成 変更 65 伝書鳩 97 98 97 99 ) JSP 140 PHP 140 統合開発環境 10 特殊文字 41 独立性 92 125 128 51 郵便番号 145 認証 138 制約 111 144 112 50 48 暦 利用 転送( Java pear PHP 要素 70 71 71 要素 31 行 67 45 検索 44, 55 分散 68 160 140 140 39 48 包摂 68 47 47 二重引用符 認証 JSP PHP 184 行 47 41 138 行 背景色 45 92 配列 172 176 高 185 67 派生 180 排他制御 93 管理 言語 47 行 93 32 173 31 48 152 見出 明朝体 文字 HTML 187 154 32, 173 128 文書型宣言 170 例外 31 185 176 184 170 138 125 40, 行 144 197 監 修 者 略 歴 佐久田 博司(さくた・ひろし) 1979 年 1981 年 1984 年 1988 年 1992 年 1997 年 2004 年 東京大学工学系大学院修了(工学博士) 株式会社日立製作所日立工場入社 長岡技術科学大学機械系助手 長岡技術科学大学助教授 青山学院大学理工学部助教授 マサチューセッツ工科大学客員助教授 青山学院大学理工学部教授 現在に至る 著 者 略 歴 矢吹 太朗(やぶき・たろう) 1998 年 1999 年 2004 年 2004 年 2004 年 2007 年 東京大学理学部天文学科卒業 東京大学大学院理学系研究科天文学専攻中退 東京大学大学院新領域創成科学研究科基盤情報学専攻修了 博士(科学) 青山学院大学理工学部助手 青山学院大学理工学部助教 現在に至る Web アプリケーション構築入門 (第 2 版) © 佐久田博司・矢吹太朗 2011 2007 年 7 月 31 日 第 1 版第 1 刷発行 2011 年 3 月 31 日 第 2 版第 1 刷発行 監 修 者 著 者 発 行 者 発 行 所 【本書の無断転載を禁ず】 佐久田博司 矢吹太朗 森北博巳 森北出版株式会社 東京都千代田区富士見 1-4-11(〒 102-0071) 電話 03-3265-8341 / FAX 03-3264-8709 http://www.morikita.co.jp/ 日本書籍出版協会・自然科学書協会・工学書協会 会員 <(社)出版者著作権管理機構 委託出版物> 落丁・乱丁本はお取替えいたします 印刷・製本 / 丸井工文社 カバーデザイン / トップスタジオデザイン室 (轟木亜紀子) Printed in Japan / ISBN978-4-627-84732-3