Software Design plusシリーズWebサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門
2016年6月7日紙版発売
2016年6月7日電子版発売
前橋和弥 著
B5変形判/304ページ
定価2,948円(本体2,680円+税10%)
ISBN 978-4-7741-8188-2
書籍の概要
この本の概要
Webアプリ開発には幅広い知識と,多様な技術を使いこなせることが求められます。HTTP・Webサーバ・サーブレット・JSP・Cookie・セッション・プロキシサーバ・TLS・認証・JavaScriptでのDOM操作・Ajax。これらを正しく説明できますか?使いこなせますか? 人に聞いただけでは忘れるかもしれません。読んで理解しただけでは使えないかもしれません。しかし,自分で試して納得した技術は使えるようになります。本書では,Webサーバを作りつつ,実際に動かして結果を見ながら,先に挙げた技術要素を1つ1つ解説します。
こんな方におすすめ
- Webアプリケーションを開発しているエンジニア/これから開発するエンジニア
この書籍に関連する記事があります!
- Webアプリ開発の基礎知識,作りながら学ぶ意味とは?
- Amazon,楽天,Gmail,Twitterなど,インターネットに接続して利用するこれらのサービスやツールは,Webアプリケーション(以下,Webアプリ)と呼ばれます。
本書のサンプル
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
目次
序章 はじめに
- 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の<form>要素
- 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パッケージ
この本に関連する書籍
-
新・標準プログラマーズライブラリ C言語 ポインタ完全制覇
2001年発売以来,多くの方にご支持いただいてきたロングセラー『C言語 ポインタ完全制覇』が装いも新たに登場! 新版では,ISO-C99・C11での扱いを追加したほか,64bit...
-
『プロになるためのWeb技術入門』――なぜ,あなたはWebシステムを開発できないのか
『なぜあなたはJavaでオブジェクト指向開発できないのか』の著者である小森祐介氏の新刊です。Webアプリケーションの開発方法を,インターネットの仕組みの根本原理から...
-
Webを支える技術 ―― HTTP,URI,HTML,そしてREST
Webは誕生から20年で爆発的な普及を果たし,17億人のユーザと2億台のサーバを抱える巨大システムへと成長しました。Webがここまで成功した秘密は,その設計思想,いわゆ...