Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門


Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門 (Software Design plus)


技術評論社


まえがき

序章 はじめに
I.1 なぜWebサーバを作るのか
I.2 「Webアプリケーション」という不幸
I.3 対象読者
I.4 本書の構成
I.5 本書のサポートページについて

第1章 Webサーバを作る
1.1 Webサーバとはそもそも何か
1.2 URL―スキーム,ホスト,ドメイン,ポート
1.3 TCPサーバ/クライアントを作る
1.3.1 TCPとソケット
1.3.2 TCPサーバ/クライアントのプログラム
[補足] C,C#の場合
1.3.3 TCPサーバをWebブラウザで叩く
1.3.4 TCPクライアントでWebサーバを叩く
[補足] Apache入れるの面倒なんですけど
1.4 HTTP―Hypertext Transfer Protocolについて
1.4.1 HTTPとはそもそも何か
[補足] HTTP/2
1.4.2 HTTPステータスコード
1.4.3 RFCとは何か
1.4.4 画像を表示する―Content-Type
1.4.5 Apacheのアクセスログを見る
[補足] なぜIEのユーザエージェントが「Mozilla」なのか?
1.5 Webサーバを作る
1.5.1 Webサーバは何を返せばよいのか
1.5.2 レスポンスヘッダを取捨選択する
1.5.3 1つのHTMLファイルを返す
[補足] ディレクトリトラバーサル脆弱性
1.5.4 普通にWebページを表示できるようにする
[補足] 1つのサーバ側のポート番号で,複数の通信を行う

第2章 Webサーバを完成させる
2.1 この章で扱うこと
2.2 「404 Not Found」を返す
2.3 ディレクトリトラバーサル脆弱性に対応する
2.4 ディレクトリを指定した場合―リダイレクト
[補足] URLの末尾のスラッシュはいるの? いらないの?
2.5 URLエンコードに対応する
[補足] クエリストリング部分の文字コード
[補足] JavaのURLDecoder.decode()がたいへんにタコである話
2.6 Modoki/0.2のソースコード

第3章 へなちょこサーブレットコンテナ「Henacat」を作る
3.1 Webアプリケーションとはそもそも何か
3.1.1 Webアプリケーションの基本的な動き
[補足] 静的コンテンツ/動的コンテンツ
3.1.2 GETのパラメタ―クエリストリング
3.1.3 POSTメソッド
3.2 POSTを受け付ける
3.2.1 HTMLの

要素
3.2.2 POSTで何が送られてくるのか
[補足] 1ページに複数のボタンを配置したい
3.2.3 multipart/form-data
[補足] ファイルのパスをサーバに送って良いのか
[補足] フォームの内容の復元について
3.3 サーブレットとは何か
3.3.1 サーブレットとは
[補足] サーブレットのインスタンスは1つだけ生成される
3.3.2 Tomcatをインストールする
3.3.3 Tomcatで掲示板を作る
[補足] POSTのあと,リロードすると
3.3.4 JSPとは何か
3.4 Henacat ver.0.1を作る
3.4.1 Henacat ver.0.1で実装するサーブレットAPI
3.4.2 Henacat ver.0.1の実装
[補足] 302 Foundによるリダイレクト
[補足] Tomcat 5以降でsetCharacterEncoding()の仕様が変わった話
3.4.3 Henacat ver.0.1で掲示板を動かす

第4章 Cookieに対応する
4.1 Cookieとは
[補足] Cookieの容量制限
4.2 クライアント側で発行するCookie
4.3 Cookieの仕様
4.4 TomcatでCookieを発行する
4.5 Henacatに追加するメソッド
4.6 Henacatにおける実装
4.6.1 Cookieクラス
4.6.2 Cookieの受信
4.6.3 Cookieの送信
4.6.4 ServletServiceクラス
4.6.5 SendResponseクラス
4.7 Henacat ver.0.2でCookieを発行する
[補足] Cookieの日付形式について

第5章 セッションに対応する
5.1 セッションとは
[補足] Webサーバがたくさんある場合
[補足] セッションをCookie以外で実現する方法
5.2 Tomcatでセッションを使ってみる
5.3 Henacatに追加するメソッド
5.4 Henacatにおける実装
5.4.1 HttpSessionImplクラス
5.4.2 SessionManagerクラス
5.4.3 SessionIdGeneratorクラス
5.4.4 HttpServletRequestImplクラス
5.4.5 Henacatでセッションを使ってみる

第6章 Webアプリ開発に必要なその他の知識
6.1 この章で扱うこと
6.2 OSI 参照モデル
6.2.1 OSI参照モデルとは
6.2.2 インターネット・プロトコル・スイート
[補足] DNS
6.3 プロキシサーバ
6.3.1 プロキシサーバとは
[補足] IPアドレス枯渇問題
6.3.2 プロキシサーバの動きを確認する
6.3.3 リバースプロキシ
[補足] X-Forwarded-For
6.4 SSL(TLS)
6.4.1 SSL(TLS)とは
6.4.2 公開鍵暗号
6.4.3 サーバ証明書
[補足] オレオレ証明書
[補足] プロキシサーバのログにはSSLによる通信の内容が残るのか
6.5 認証
6.5.1 Basic認証
6.5.2 Digest認証
6.5.3 パスワードとハッシュ
6.5.4 フォーム認証
6.6 クライアントサイドの技術
6.6.1 JavaScriptによるDOMの操作
6.6.2 DOMを見てみる
[補足] ノードとエレメント
[補足] JavaScriptの実行タイミングについて
6.6.3 DOMを操作する
6.6.4 Ajax
6.7 セキュリティ
6.7.1 同一オリジンポリシー
[補足] JSONP
6.7.2 クロスサイトスクリプティング
[補足] 反射型,格納型,DOM Based
6.7.3 SQLインジェクション
6.7.4 HTMLやSQLのエスケープは「使用する直前」に行う
6.7.5 Webビーコン

第7章 TIPS
7.1 この章で扱うこと
7.2 ファイルをアップロードする
7.3 画像を動的に生成する
7.4 ファイルをダウンロードさせる(サーバ側)
7.5 ファイルをダウンロードする(クライアント側)
[補足] 分割ダウンロード
7.6 Web APIを呼び出す

付録 Henacatの全ソースコード
A.1 Henacat ver.0.4全ソースコード
A.1.1 コンパイルと実行
A.1.2 com.kmaebashi.henacat.webserverパッケージ
A.1.3 com.kmaebashi.henacat.servletパッケージ
A.1.4 com.kmaebashi.henacat.servlet.httpパッケージ
A.1.5 com.kmaebashi.henacat.servletimplパッケージ
A.1.6 com.kmaebashi.henacat.utilパッケージ

参考文献/URL
索引

書籍目次

Posted by shi-n