「JavaによるWebアプリ開発」の定番入門書。サーブレット4.0(Tomcat 9)対応、IDE&新機能解説など大幅改訂。
ロングセラー「JavaによるWebアプリ開発」定番入門書の最新版!
JavaによるWeb開発で必要となるJSP&サーブレット、データベース連携、
便利なライブラリの使い方などを、さまざまなサンプルプログラムを例示しながら、
1つ1つやさしく丁寧に解説します。
HTTPリクエスト/レスポンス、クッキーやセッション情報など、
Webアプリの仕組み・重要キーワード、実践的なアプリを開発するうえで
欠かせない「セキュリティ対策」もわかりやすく解説。
第3版ではJakarta EE/サーブレット5.0に対応したほか、
Visual Studio Codeを使った開発&新機能の解説など
全面的な改訂を行っています。
独習シリーズの特徴である、解説→例題(サンプル)→理解度チェック
という3つのステップで、JSP&サーブレットによるWebアプリ開発の基礎を
完全習得できます。
【ポイント】
●サーバサイドJavaの最も基本的な技術であるJSP&サーブレットの基礎知識と
プログラミングを、手を動かしながらおぼえる定番教科書
●セキュリティ対策を含めて、JavaによるWebアプリ開発で必要な知識が身につく
JavaでWebアプリを作りたい、サーバーサイドJavaを基礎から学びたい、
という方におすすめの一冊です。
【本書の構成】
Chapter 1 イントロダクション
Chapter 2 JSPの基本
Chapter 3 リクエスト情報
Chapter 4 データベース連携
Chapter 5 JSTL(Jakarta Standard Tag Library)
Chapter 6 サーブレット&JavaBeans
Chapter 7 デプロイメントディスクリプター 基本編
Chapter 8 デプロイメントディスクリプター 応用編
Chapter 9 JSP&サーブレットで利用可能なライブラリ
Chapter 10 セキュリティ対策
付録 「練習問題」「この章の理解度チェック」解答
第1章 イントロダクション
1.1 JSP&サーブレットとWebアプリ
1.1.1 クライアント/サーバー間の通信
1.1.2 静的なページと動的なページ
1.1.3 クライアントサイド技術とサーバーサイド技術
1.1.4 サーバーサイド技術の中のJSP&サーブレット
1.1.5 Java技術とJSP&サーブレット
1.1.6 JSPとサーブレットの使い分け
1.2 JSP&サーブレット利用のための基本環境設定
1.2.1 JSP&サーブレットプログラミングに必要なソフトウェア
1.2.2 環境設定の手順―Windowsの場合
1.2.3 環境設定の手順―macOSの場合
1.2.4 環境設定の手順―Windows/macOS共通
1.2.5 [補足]アプリフォルダーを準備する
この章の理解度チェック
第2章 JSPの基本
2.1 初めてのJSP
2.1.1 基本的なサンプルの作成
2.1.2 拡張子は「.jsp」が基本
2.1.3 JSPページの構造
2.1.4 文字コードの設定
2.2 ディレクティブ
2.2.1 ディレクティブの基本構文
2.2.2 ページの処理方法を決める―@pageディレクティブ
2.2.3 コンテンツタイプを宣言する―contentType属性
2.2.4 出力文字コードとページ文字コード
2.2.5 バッファー処理を有効にする―buffer属性
2.2.6 クラスライブラリをインポートする―import属性
2.3 アクションタグ
2.3.1 アクションタグの基本的な用法
2.3.2 [補足]インクルードファイルではpageEncoding属性が必須
2.4 スクリプティング要素
2.4.1 スクリプトレット
2.4.2 暗黙オブジェクト
2.4.3 スクリプトレットと固定テンプレート
2.4.4 宣言部
2.4.5 [補足]同時アクセス時の注意
2.4.6 式(Expression)
2.4.7 式(Expression)を記述する場合の注意
2.5 コメント
2.5.1 JSPで利用可能なコメント
この章の理解度チェック
第3章 リクエスト情報
3.1 リクエスト情報
3.1.1 HTTP通信の確認
3.1.2 HTTPメソッドとHTTPステータス
3.2 ポストデータ
3.2.1 [例]ポストデータを取得する
3.2.2 フォーム部品
3.2.3 日本語を扱う
3.2.4 複数の値を持つ要素にアクセスする
3.3 クエリ情報
3.3.1 [例]クエリ情報を取得する
3.3.2 [例]ハイパーリンク経由で値を受け渡しする
3.3.3 ポストデータとクエリ情報
3.4 ヘッダー情報
3.4.1 ヘッダー情報の種類
3.4.2 ヘッダー情報の利用方法
3.4.3 [例]リクエストヘッダーを取得する
3.4.4 ヘッダー情報を取得するための専用メソッド
3.4.5 [例]リクエストパスを取得する
3.4.6 [例]レスポンスヘッダーを設定する(1)―リダイレクト
3.4.7 [例]レスポンスヘッダーを設定する(2)―汎用的なヘッダーの発行
3.5 クッキー情報
3.5.1 [例]クッキーの基本的な読み書き
3.5.2 クッキー授受の仕組み
3.6 セッション情報
3.6.1 [例]基本的なセッション情報の読み書き
3.6.2 sessionオブジェクトの主なメソッド
3.6.3 セッションの仕組み
3.6.4 セッションを利用する場合の注意点
この章の理解度チェック
第4章 データベース連携
4.1 データベースの種類
4.1.1 リレーショナルデータベースの種類
4.2 データベース操作の基本
4.2.1 mysqlクライアントの使い方
4.2.2 SQLの基本
4.3 JDBC
4.3.1 JDBCとは?
4.3.2 JDBCの内部構造
4.4 データベース接続の準備
4.4.1 コネクションプーリング
4.4.2 データベース接続の基本
4.4.3 データベース切断時の注意点
4.5 SQLクエリの発行
4.5.1 [例]入力値をもとにデータベースに登録する
4.6 結果セットの取得
4.7 トランザクション処理
4.7.1 トランザクションの活用
4.8 メタデータ
4.8.1 [例]データベースの構成情報を取得する
4.8.2 [例]結果セットの構成情報を取得する
この章の理解度チェック
第5章 JSTL(Jakarta Standard Tag Library)
5.1 JSTLとはなにか?
5.1.1 JSTLのタグライブラリ
5.1.2 JSTLのインストール方法
5.1.3 [例]変数の出力をJSTLで表現する
5.2 式言語
5.2.1 式言語が必要な理由
5.2.2 暗黙オブジェクトと演算子(式言語)
5.3 Coreタグライブラリ
5.3.1 スコープ変数を設定する―タグ
5.3.2 変数の値を出力する―タグ
5.3.3 単純分岐を実装する―タグ
5.3.4 多岐分岐を実装する―タグ
5.3.5 繰り返し処理を行う―タグ
5.3.6 [例]Mapの内容を列挙する
5.3.7 [例]ステータス変数を利用する
5.4 Databaseタグライブラリ
5.4.1 [例]Databaseタグライブラリでデータベースを検索する
5.4.2 [例]Databaseタグライブラリでデータを登録する
5.5 i18nタグライブラリ
5.5.1 数値データを加工する―タグ
5.5.2 日付データを加工する―タグ
5.5.3 文字列を日付/数値データに変換する―/タグ
5.5.4 ロケール情報を設定する―タグ
5.5.5 国際化対応ページを作成する―/タグ
5.5.6 リクエスト情報の文字コードを宣言する―タグ
5.6 Functionsタグライブラリ
この章の理解度チェック
第6章 サーブレット&JavaBeans
6.1 サーブレットの必要性
6.1.1 JSP/サーブレットは補完関係
6.1.2 JSP=サーブレットである
6.2 サーブレットの基本構文
6.2.1 サーブレットの作成
6.2.2 サーブレットの骨格
6.2.3 [補足]web.xmlにサーブレットを登録する
6.2.4 [例]サーブレットをフォームから起動する
6.3 JSP固有の要素に代わるもの
6.3.1 コンテンツタイプを指定する
6.3.2 暗黙オブジェクトを取得する
6.3.3 スクリプトレットと宣言部
6.3.4 シングルインスタンス・マルチスレッド
6.4 ーブレットのライフサイクル
6.4.1 initメソッドとdestroyメソッド
6.4.2 [例]初期化パラメーターを取得する
6.4.3 [補足]初期化パラメーターをアノテーションで設定する
6.5 サーブレットのより高度な話題
6.5.1 ファイルのアップロード機能を実装する
6.5.2 URLパターンのワイルドカード指定―urlPatterns属性
6.5.3 コンテナー起動時にサーブレットを初期化する―loadOnStartup属性
6.6 JSP&サーブレットの連携
6.6.1 [例]サーブレットの処理結果をJSPページで表示する
6.6.2 リクエスト属性
6.6.3 リダイレクトとフォワード(転送)
6.6.4 リクエスト属性の参照(JSP)
6.6.5 変数のスコープ
6.7 MVCモデル
6.7.1 Model-View-Controllerとは?
6.7.2 [例]Modelを切り出す例
6.7.3 JavaBeans
6.7.4 JavaBeansを受け渡しする方法
6.7.5 [例]JavaBeansのリストを受け渡しする
この章の理解度チェック
第7章 デプロイメントディスクリプター 基本編
7.1 デプロイメントディスクリプターの基本
7.1.1 XMLの基本構文
7.1.2 web.xmlの配置先
7.1.3 web.xmlの骨組み
7.2 初期化パラメーターを定義する―要素
7.2.1 [例]初期化パラメーターを取得する
7.2.2 JSTLで利用可能な初期化パラメーター
7.3 カスタムのエラーページを設置する―要素
7.3.1 [例]カスタムエラーページを定義する
7.4 アプリに認証機能を実装する―//要素
7.4.1 フォーム認証とは?
7.4.2 [例]フォーム認証の機能を実装する
7.4.3 アクセス規則をアノテーションで記述する
7.4.4 [例]ユーザー情報をデータベースで管理する
7.4.5 独自のログインページを実装する
7.5 @page/@taglibディレクティブの記述を省力化する―要素
7.5.1 [例]共通のヘッダーファイルを定義する
7.5.2 要素と要素
7.5.3 リクエスト/レスポンス時の文字コードを設定する
7.6 ウェルカムページを定義する―要素
7.6.1 [例]ウェルカムページを設定する
7.6.2 [補足]デフォルトサーブレット
7.7 Tomcatサーバーを管理する―server.xml
7.7.1 server.xmlの階層構造
7.7.2 サーバー/クライアント間の接続を管理する―要素(1)
7.7.3 要素で利用可能な属性―要素(2)
7.7.4 仮想ホスト単位の挙動を定義する―要素
7.7.5 [補足]アプリの配布―warファイル
7.7.6 アプリ単位の基本情報を定義する―要素
7.7.7 アプリにTomcat独自のフィルター機能を追加する―要素
この章の理解度チェック
第8章 デプロイメントディスクリプター 応用編
8.1 アプリ共通の処理を定義する―/要素
8.1.1 フィルタークラスの基本
8.1.2 フィルターの基本構文
8.1.3 web.xmlでフィルター情報を宣言する
8.2 リスナークラスでアプリケーションイベントを捕捉する―要素
8.2.1 [例]セッションの開始/終了をロギングする
8.2.2 web.xmlでリスナーを宣言する
8.2.3 [例]アプリ開始時に必要なリソースをロードする
8.2.4 [例]サーブレット/フィルターを動的に登録する
8.3 自作のタグライブラリを定義する―要素
8.3.1 [例]カンマ/タブ区切りテキストをHTMLテーブルに整形する
8.3.2 タグライブラリディスクリプターの配置場所
8.3.3 [例]システムプロパティの情報をリスト化する―動的属性
8.3.4 [例]カスタムタグの出力をカスタマイズする―フラグメント
8.3.5 複数のフラグメントを扱う―要素
8.3.6 タグファイルでカスタムタグの定義を省力化する
8.3.7 タグファイルにおける動的属性/フラグメント
8.4 静的メソッドを式言語から呼び出す
8.4.1 [例]システムプロパティを表示する関数を定義する
8.4.2 カスタムタグと関数の使い分け
この章の理解度チェック
第9章 JSP&サーブレットで利用可能なライブラリ
9.1 外部ライブラリの利用方法
9.1.1 .jarファイルとその配置先
9.1.2 クラスローダー
9.2 電子メールを送信する―Jakarta Mail
9.2.1 Jakarta Mailの準備
9.2.2 [例]テキストメールを送信する
9.2.3 [例]添付ファイル付きのHTMLメールを送信する
9.3 JSON形式のデータを生成する―Gson
9.3.1 サーバー機能の準備
9.3.2 クライアントサイド機能の準備
9.4 PDF帳票を生成する―iText
9.4.1 iTextの準備
9.4.2 iTextの基本的な使い方
9.4.3 [例]さまざまなPDF文書の生成
この章の理解度チェック
第10章 セキュリティ対策
10.1 クロスサイトスクリプティング脆弱性
10.1.1 原因
10.1.2 対応策
10.2 SQLインジェクション
10.2.1 原因
10.2.2 対策
10.3 クロスサイトリクエストフォージェリ
10.3.1 原因
10.3.2 対策
10.4 パストラバーサル
10.4.1 原因
10.4.2 対策
10.5 その他の攻撃と予防策
10.5.1 Cookieクラスの設定パラメーター
10.5.2 セッションハイジャック
10.5.3 ファイルアップロード攻撃
10.6 入力値の検証
10.6.1 検証の前提
10.6.2 [例]入力フォームの検証処理
この章の理解度チェック
付録A 「練習問題」「この章の理解度チェック」解答