JSP&サーブレットを基礎からきちんとを学ぼう
Javaの基本をマスターした方向け、Webアプリ開発の入門書です。JSP&サーブレットの基礎からDB連携、便利なライブラリの使い方まで、1つ1つやさしく丁寧に解説します。第3版ではJakarta EE/サーブレット5.0に対応したほか、Visual Studio Codeを使った開発&新機能の解説など全面的な改訂を行っています。
掲載サンプルはサポートサイトからダウンロードできます。
更新履歴
- FAQ情報:2022年8月9日 更新
- 正誤訂正:2023年12月2日 更新
目次
- 第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 スコープ変数を設定する―<c:set>タグ
- 5.3.2 変数の値を出力する―<c:out>タグ
- 5.3.3 単純分岐を実装する―<c:if>タグ
- 5.3.4 多岐分岐を実装する―<c:choose>タグ
- 5.3.5 繰り返し処理を行う―<c:forEach>タグ
- 5.3.6 [例]Mapの内容を列挙する
- 5.3.7 [例]ステータス変数を利用する
- 5.4 Databaseタグライブラリ
- 5.4.1 [例]Databaseタグライブラリでデータベースを検索する
- 5.4.2 [例]Databaseタグライブラリでデータを登録する
- 5.5 i18nタグライブラリ
- 5.5.1 数値データを加工する―<fmt:formatNumber>タグ
- 5.5.2 日付データを加工する―<fmt:formatDate>タグ
- 5.5.3 文字列を日付/数値データに変換する―<fmt:parseDate>/<fmt:parseNumber>タグ
- 5.5.4 ロケール情報を設定する―<fmt:setLocale>タグ
- 5.5.5 国際化対応ページを作成する―<fmt:setBundle>/<fmt:message>タグ
- 5.5.6 リクエスト情報の文字コードを宣言する―<fmt:requestEncoding>タグ
- 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 初期化パラメーターを定義する―<context-param>要素
- 7.2.1 [例]初期化パラメーターを取得する
- 7.2.2 JSTLで利用可能な初期化パラメーター
- 7.3 カスタムのエラーページを設置する―<error-page>要素
- 7.3.1 [例]カスタムエラーページを定義する
- 7.4 アプリに認証機能を実装する―<security-constraint>/<login-config>/<security-role>要素
- 7.4.1 フォーム認証とは?
- 7.4.2 [例]フォーム認証の機能を実装する
- 7.4.3 アクセス規則をアノテーションで記述する
- 7.4.4 [例]ユーザー情報をデータベースで管理する
- 7.4.5 独自のログインページを実装する
- 7.5 @page/@taglibディレクティブの記述を省力化する―<jsp-config>要素
- 7.5.1 [例]共通のヘッダーファイルを定義する
- 7.5.2 < scripting-invalid>要素と<el-ignored>要素
- 7.5.3 リクエスト/レスポンス時の文字コードを設定する
- 7.6 ウェルカムページを定義する―<welcome-file-list>要素
- 7.6.1 [例]ウェルカムページを設定する
- 7.6.2 [補足]デフォルトサーブレット
- 7.7 Tomcatサーバーを管理する―server.xml
- 7.7.1 server.xmlの階層構造
- 7.7.2 サーバー/クライアント間の接続を管理する―<Connector>要素(1)
- 7.7.3 < Connector> 要素で利用可能な属性―<Connector>要素(2)
- 7.7.4 仮想ホスト単位の挙動を定義する―<Host>要素
- 7.7.5 [補足]アプリの配布―warファイル
- 7.7.6 アプリ単位の基本情報を定義する―<Context>要素
- 7.7.7 アプリにTomcat独自のフィルター機能を追加する―<Valve>要素
- この章の理解度チェック
- 第8章 デプロイメントディスクリプター 応用編
- 8.1 アプリ共通の処理を定義する―<filter>/<filter-mapping>要素
- 8.1.1 フィルタークラスの基本
- 8.1.2 フィルターの基本構文
- 8.1.3 web.xmlでフィルター情報を宣言する
- 8.2 リスナークラスでアプリケーションイベントを捕捉する―<listener>要素
- 8.2.1 [例]セッションの開始/終了をロギングする
- 8.2.2 web.xmlでリスナーを宣言する
- 8.2.3 [例]アプリ開始時に必要なリソースをロードする
- 8.2.4 [例]サーブレット/フィルターを動的に登録する
- 8.3 自作のタグライブラリを定義する―<jsp-config>要素
- 8.3.1 [例]カンマ/タブ区切りテキストをHTMLテーブルに整形する
- 8.3.2 タグライブラリディスクリプターの配置場所
- 8.3.3 [例]システムプロパティの情報をリスト化する―動的属性
- 8.3.4 [例]カスタムタグの出力をカスタマイズする―フラグメント
- 8.3.5 複数のフラグメントを扱う―<jsp:attribute>要素
- 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 [例]入力フォームの検証処理
- この章の理解度チェック
- コラム
- アプリケーションフレームワーク
- Tomcatを管理するための便利ツール ―Tomcat Manager概要編
- 統合開発環境Eclipse
- Tomcatを管理するための便利ツール ―Tomcat Manager準備編
- JSP&サーブレットをより深く学ぶための関連書籍
正誤表
| 該当頁 | 該当箇所 | 修正刷 |
|---|---|---|
| 訂正箇所 | 訂正事項 | 更新日 |
| p.380 | 表7.13 usr_roleテーブルのデータ 「role」列 | 2刷 |
| admin_gui manager_gui |
admin-gui manager-gui (※ハイフンが正しいです) |
2023/11/23 |
| p.522 | リスト10.6 ShowServlet.java | 2刷 |
| File fileRoot = new File(application.getRealPath("root")); | File fileRoot = new File(application.getRealPath(root)); ※"root"のダブルクォーテーションを削除してください |
2023/12/02 |
FAQ
VSCodeが自動コンパイルした.classとjava実行環境のバージョン(マイナーバージョン)が異なる場合、Servletを動作させようとするとエラーが出るようです。
配布サンプルの「complete」「template」フォルダー双方の「selfjsp」フォルダー配下に「.settings/org.eclipse.jdt.core.compiler.problem.en」を用意していますので、こちらを「selfjsp」フォルダー配下に配置してお試しください。
なお、こちらは隠しファイルとなっていますので、エクスプローラーやFinderから表示できる状態に切り替えると「.settings」フォルダーが確認できるかと思います。
配布サンプルの「complete」「template」フォルダー双方の「selfjsp」フォルダー配下に「.settings/org.eclipse.jdt.core.compiler.problem.en」を用意していますので、こちらを「selfjsp」フォルダー配下に配置してお試しください。
なお、こちらは隠しファイルとなっていますので、エクスプローラーやFinderから表示できる状態に切り替えると「.settings」フォルダーが確認できるかと思います。
更新日: 2022.08.09
Windows標準の圧縮ツールでは正しく解凍できない場合があるようです。
7-Zip(https://sevenzip.osdn.jp/)を使って解凍してみてください。
7-Zip(https://sevenzip.osdn.jp/)を使って解凍してみてください。
更新日: 2022.02.18
お問い合わせ
書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。
お問い合わせの前にFAQ・正誤表をご確認ください。すでに掲載済みの内容については個別回答が難しい場合があります。