Javaサーブレットプログラミング 第2版

[cover photo]
この商品は品切れ再入荷未定です

サーブレットは動的なWebコンテンツ/アプリケーションの開発を容易にする技術として、Webサイト構築、とりわけエンタープライズコンピューティングの開発環境としてWebを利用する現場での利用が急速に拡がりつつあります。本書はサーブレットを使ってどのようにパワフルでインタラクティブなWebアプリケーションを開発するかを詳細に解説します。Java APIの最新バージョンをカバーしています。著者のJason HunterはサーブレットコンテナであるTomcatの開発者であり、まさにサーブレットの公式ガイドといえる書です。

まえがき

1章 はじめに
        1.1 Webアプリケーションの歴史
        1.2 サーブレットのサポート
        1.3 サーブレットの力

2章 HTTPサーブレットの基本
        2.1 HTTPの基本
        2.2 サーブレットAPI
        2.3 ページの生成
        2.4 Webアプリケーション
        2.5 さらに先へ

3章 サーブレットのライフサイクル
        3.1 いろいろなサーブレット
        3.2  サーブレットの再ロード
        3.3 initとdestroy
        3.4 シングルスレッドモデル
        3.5 バックグラウンド処理
        3.6 起動時のロード
        3.7 クライアント側キャッシュ
        3.8 サーバ側キャッシュ

4章 情報の取得
        4.1 サーブレット
        4.2 サーバ
        4.3 クライアント

5章 HTML情報の送信
        5.1 レスポンスの構造
        5.2 通常のレスポンスの送信
        5.3 永続接続の使用
        5.4 レスポンスのバッファリング
        5.5 ステイタスコード
        5.6 HTTPヘッダ
        5.7 うまくいかなかったら
        5.8 サーブレット猫に皮をかぶせる6つの方法

6章 マルチメディアコンテンツの送信
        6.1 WAPとWML
        6.2 画像
        6.3 コンテンツの圧縮
        6.4 サーバプッシュ

7章 セッションのトラッキング
        7.1 ユーザ認証
        7.2 隠れたフォームフィールド
        7.3 URLの書き換え
        7.4 永続クッキー
        7.5 セッショントラッキングAPI

8章 セキュリティ
        8.1 HTTP認証
        8.2 フォームを用いた認証
        8.3 カスタム認証
        8.4 デジタル証明書
        8.5 SSL(Secure Sockets Layer)

9章 データベース接続
        9.1 関係データベース
        9.2 JDBC API
        9.3 データベースオブジェクトの再利用
        9.4 トランザクション
        9.5 ゲストブックサーブレット
        9.6 進んだJDBCテクニック
        9.7 コアを超えて

10章 アプレット・サーブレット間通信
        10.1 通信の方法
        10.2 Daytimeサーバ
        10.3 チャットサーバ

11章 サーブレットの協調
        11.1 情報の共有
        11.2 制御の共有

12章 エンタープライズサーブレットとJ2EE
        12.1 負荷分散
        12.2 J2EEとの統合

13章 国際化
        13.1 西欧言語
        13.2 地域の習慣への対応
        13.3 非西欧言語
        13.4 複数言語
        13.5 動的言語ネゴシエーション
        13.6 HTMLフォーム

14章 Teaフレームワーク
        14.1 Tea言語
        14.2 まずはじめに
        14.3  リクエスト情報
        14.4 Teaの管理
        14.5 Teaアプリケーション
        14.6 ツールアプリケーション
        14.7 最後に

15章 WebMacro
        15.1 WebMacroフレームワーク
        15.2 WebMacroのインストール
        15.3 WebMacroのディレクティブ
        15.4 WebMacroのテンプレート
        15.5 ツールアプリケーション
        15.6 フィルタ

16章 ECS
        16.1 オブジェクトとしてのページコンポーネント
        16.2 ResultSetの表示

17章 XMLC
        17.1 簡単なXMLのコンパイル
        17.2 操作クラス
        17.3 ツールアプリケーション

18章 JavaServer Pages
        18.1 JavaServer Pagesの使い方
        18.2 舞台裏
        18.3 式と宣言
        18.4 ディレクティブ
        18.5 JSPとJavaBeans
        18.6 インクルードとフォワード
        18.7 ツールアプリケーション
        18.8 カスタムタグライブラリ

19章 残りの話
        19.1 パラメータのパーズ
        19.2 電子メイルの送信
        19.3 正規表現の使用
        19.4 プログラムの実行
        19.5 ネイティブメソッドの使用
        19.6 RMIクライアントとしてのサーブレット
        19.7 デバッグ
        19.8 性能のチューニング

20章 サーブレット2.3 APIの新機能
        20.1 サーブレットAPI 2.3での変更点
        20.2 まとめ

付録A サーブレットAPIクイックリファレンス
A.1 GenericServlet
A.2 RequestDispatcher
A.3 Servlet
A.4 ServletConfig
A.5 ServletContext
A.6 ServletException
A.7 ServletInputStream
A.8 ServletOutputStream
A.9 ServletRequest
A.10 ServletResponse
A.11 SingleThreadModel
A.12 UnavailableException
付録B HTTPサーブレットAPIクイックリファレンス
B.1 Cookie
B.2 HttpServlet
B.3 HttpServletRequest
B.4 HttpServletResponse
B.5 HttpSession
B.6 HttpSessionBindingEvent
B.7 HttpSessionBindingListener
B.8 HttpSessionContext
B.9 HttpUtils
付録C デプロイ記述DTDリファレンス
付録D HTTPステイタスコード
付録E 文字エンティティ
付録F 文字セット
索引


サンプルプログラム目次

例2-1    "Hello World"と表示するサーブレット
例2-2    だれに挨拶しているのか知っているサーブレット
例2-3    HEADリクエストの場合にはすばやくリターンするHelloサーブレット
例2-4    Webアプリケーション内部のファイル構造
例2-5    簡単なデプロイ記述
例2-6    サーブレットマッピングの追加
例2-7    Helloと言うためのたくさんの方法
例3-1    簡単なカウンタ
例3-2    全体に対するカウンタ
例3-3    デプロイ記述での初期化パラメータの設定
例3-4    初期化パラメータを読むカウンタ
例3-5    完全に永続的なカウンタ
例3-6    SingleThreadModelを用いてデータベースへの接続を処理する
例3-7    素数の発見
例3-8    起動時にサーブレットをロード
例3-9    ちょっとしたサーブレットのパレード
例3-10   CacheHttpServletを用いたゲストブック
例3-11   CacheHttpServletクラス
例4-1    初期化パラメータを用いてデータベースへ接続
例4-2    初期化パラメータ名の取得
例4-3    サーバを調査
例4-4    テンポラリディレクトリにテンポラリファイルを作る
例4-5    サーバに固定されるサーブレット
例4-6    デプロイ記述でのコンテクスト初期化パラメータの設定
例4-7    コンテクスト初期化パラメータを用いたレジストリの発見
例4-8    VersionDetectorクラス
例4-9    バージョンの調査
例4-10   信頼できるだろうか?
例4-11   ハイ! あなたを覚えているわよ
例4-12   パラメータの調査
例4-13   KeyedServerLockの固定を解除
例4-14   パスがどこに導くのかを示す
例4-15   みんなMIMEだいすき
例4-16   静的なファイルを動的に返す
例4-17   抽象資源の表示、安全ではない
例4-18   抽象資源の表示、安全
例4-19   ヘッダの調査
例4-20   アップロードファイルの選択用フォーム
例4-21   ファイルアップロードの処理
例4-22   MultipartRequestクラス
例5-1    もう一度ハロー
例5-2    バッファリングを用いて永続接続をサポート
例5-3    レスポンスバッファの管理
例5-4    ランダムリダイレクト
例5-5    どこに行くんだい?
例5-6    常に現在時刻
例5-7    ホストが変更されたことを説明
例5-8    400、404エラーページの設定
例5-9    ステイタスコードエラーページの動的生成
例5-10   例外、エラーのページの設定
例5-11   汎用のエラーページの動的生成
例6-1    WMLミニバーテンダdrinks.wml
例6-2    web.xmlにWAPのMIMEタイプを追加
例6-3    web.xmlにWAPのウェルカムファイルを追加
例6-4    WMLを使ってエリアコードを問い合わせる
例6-5    WAPを用いてエリアコードを検索
例6-6    Hello World画像
例6-7    りんごとオレンジを比較するグラフ
例6-8    画像の上に"CONFIDENTIAL"の表示
例6-9    グラフィックカウンタを作るための画像の合成
例6-10   画像をグレースケールに変換する特殊効果
例6-11   GrayscaleImageFilterクラス
例6-12   圧縮したコンテンツの送信
例6-13   ロケット発射のカウントダウン
例6-14   MultipartResponseクラス
例7-1    隠れたフォームフィールドを用いたセッションのトラッキング
例7-2    URL書き換えによるセッションのトラッキング
例7-3    永続クッキーを用いたセッションのトラッキング
例7-4    ヒット数をカウントするセッショントラッキング
例7-5    デフォルトのタイムアウト時間を1時間に設定
例7-6    タイムアウトで遊ぶ
例7-7    古くなったセッションの無効化
例7-8    セッション情報を調査
例7-9    セッション束縛イベントのトラッキング
例7-10   セッショントラッキングAPIの使用
例8-1    本当にこのサンプル例を見る許可を持っている?
例8-2    Tomcatのconf/tomcat-users.xmlファイル
例8-3    基本認証を用いたアクセス制限
例8-4    認証情報の調査
例8-5    フォームを用いた認証の設定
例8-6    loginpage.htmlファイル
例8-7    errorpage.htmlファイル
例8-8    サーブレットによるセキュリティ
例8-9    login.htmlファイル
例8-10   保護されたリソース
例8-11   ログイン処理
例8-12   安全な接続を要求
例8-13   クライアント証明書の確認
例8-14   Ramesh MandavaのX.509証明書チェーン
例9-1    プロパティファイルを用いたデータベース接続
例9-2    ContextPropertiesクラス
例9-3    JDBC対応サーブレット
例9-4    ResultSetMetaDataを用いてResultSetからHTMLのテーブルを生成するクラス
例9-5    ResultSetMetaDataを用いてResultSetからHTMLのテーブルを生成するクラス(任意のSQL文に対応)
例9-6    改良版電話帳サーブレット
例9-7    トランザクションを用いた注文処理
例9-8    ConnectionPoolクラス
例9-9    接続をプールするトランザクションサーブレット
例9-10   接続をセッションに関連付ける
例9-11   記帳してください
例9-12   バイナリのGIF画像をデータベースから読み出す
例10-1   いい部分が何もないDaytimeApplet
例10-2   基本的なHTTPアクセスをサポートしたDaytimeServlet
例10-3   HTTPで時刻を取得するDaytimeApplet
例10-4   HttpMessageサポートクラス
例10-5   HTTPを用いてオブジェクトを与えるDaytimeServlet
例10-6   HTTPを用いてオブジェクトを取得するDaytimeApplet
例10-7   シリアライズされたオブジェクトのPOST
例10-8   HTTPサーバ
例10-9   スーパクラスDaemonHttpServlet
例10-10  ソケット接続を用いて時刻を取得するDaytimeApplet
例10-11  DaytimeServerインタフェース
例10-12  RMIアクセスをサポートしたDaytimeServlet
例10-13  スーパクラスRemoteHttpServlet
例10-14  RMIを用いて時刻を取得するDaytimeApplet
例10-15  ChatServletが実装するChatServerインタフェース
例10-16  フルサービスのチャットサーバ/サーブレット
例10-17  HTTP通信を用いるチャットクライアント
例10-18  生のソケット接続を用いるチャットクライアント
例10-19  RMIChatAppletが実装するChatClientインタフェース
例10-20  RMI通信を用いたチャットクライアント
例10-21  入り口ドアとなるディスパッチサーブレット
例11-1   Me Gustan Burritos(ブリトーが好き)
例11-2   本日のスペシャル
例11-3   検索エンジンのバックエンド
例11-4   検索エンジンのフロントエンド
例11-5   リダイレクトではなく、直接ホームへ
例11-6   カタログアイテムのインクルード
例11-7   複数のカタログアイテムをインクルード
例11-8   カタログアイテムの表示
例12-1   java:comp/envコンテクストの調査
例13-1   名前付き文字エンティティを使って、スペイン語をしゃべる人に挨拶
例13-2   数値文字エンティティを使って、スペイン語をしゃべる人に挨拶
例13-3   Unicodeエスケープを用いて、スペイン語をしゃべる人に挨拶
例13-4   スペイン語をしゃべる人に挨拶して、時間を表示
例13-5   日本語をしゃべる人に挨拶
例13-6   ファイルから読み出したものをローカライズして出力
例13-7   ロゼッタストーンのサーブレット版
例13-8   サーブレット版バベルの塔
例13-9   LocaleNegotiatorクラス
例13-10  LocaleToCharsetMapクラス
例13-11  文字セットを隠れたフォームフィールドにセーブ
例13-12  隠れたフォームフィールドから文字セットを受け取る
例14-1   TeaServletのインストール
例14-2   名前をチェックするテンプレート
例14-3   リクエスト情報を調査するテンプレート
例14-4   手始めのTeaServlet.propertiesファイル例
例14-5   フランス流のクリック
例14-6   NameAppクラス
例14-7   NameContextクラス
例14-8   ツールアプリケーションの頭脳部
例14-9   サンプルデータ
例14-10  アクセス可能な関数を定義したコンテクスト
例14-11  Tool情報をロード、保持するクラス
例14-12  簡素なツールの表示
例14-13  より完全なツールの表示
例14-14  ヘッダのファイル
例14-15  フッタのファイル
例15-1   Helloテンプレートを駆動する簡単なサーブレット
例15-2   簡単なHelloテンプレート
例15-3   WebMacroサーブレット設計のもう1つのアプローチ
例15-4   標準的なWebMacro.propertiesファイル
例15-5   整数演算を行うコンテクストツール(複雑な計算機)
例15-6   WebMacroでリクエストを調査
例15-7   汎用で再利用可能なWebMacroサーブレット
例15-8   MacroViewで*.wmを処理するように登録
例15-9   ツールアプリケーションのWebMacroテンプレート
例15-10  ファイルheader.wm
例15-11  ファイルfooter.wm
例15-12  ツールアプリケーションを駆動するサーブレット
例16-1   ページをオブジェクトの集合として構築
例16-2   ResultSetTableの改良版
例16-3   SimpleResultSetTableの使用
例16-4   TableCustomizerクラス
例16-5   Null用カスタマイザ
例16-6   日付用カスタマイザ
例16-7   数値用カスタマイザ
例16-8   バグID用カスタマイザ
例16-9   カスタマイズ可能なResultSetのテーブル
例16-10  ResultSetTableを使用するサーブレット
例16-11  ResultSetServletのための簡単なHTMLフロントエンド
例17-1   簡単なXMLの置換
例17-2   自動生成されたHello.javaのソース
例17-3   Helloページのための操作クラス
例17-4   言語リストのモックアップ
例17-5   言語リストの操作クラス
例17-6   ツールアプリケーションのテンプレートファイル
例17-7   ツールアプリケーションのコンテンツファイル
例17-8   ツールアプリケーション操作クラス
例18-1   JSPを用いた"Hello"
例18-2   hello1.jspから自動生成された馬車馬サーブレット
例18-3   JSPの宣言を用いて挨拶
例18-4   生まれついてのワル
例18-5   問題は
例18-6   JavaBeansコンポーネントを用いた"Hello"
例18-7   HelloBeanクラス
例18-8   JSPを用いたツールビューアプリケーション
例18-9   header.jspファイル
例18-10  footer.jspファイル
例18-11  サポート用ToolBeanクラス
例18-12  モデル2のコントローラサーブレット
例18-13  カスタムタグライブラリを用いて書き直したツールアプリケーション
例19-1   ParameterParserクラス
例19-2   ParameterNotFoundExceptionクラス
例19-3   サーブレットからメイルを送信
例19-4   すべてのリンクを検索
例19-5   サーブレットからfingerコマンドを実行
例19-6   実行するコマンドにパラメータを渡す
例19-7   サーブレットをRMIのクライアントとして用いる
例19-8   クライアントリクエストの取得
例19-9   Webサーバに接続するもうひとつの方法

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]