スッキリわかるサーブレット&JSP入門
3,080円(本体 2,800円+税10%)
- 品種名
- 書籍
- 発売日
- 2014/5/7
- ページ数
- 536
- サイズ
- A5判
- 著者
- 国本 大悟 著
- ISBN
- 9784844335801
Webアプリ開発のスキルを習得して、ワンランク上のJavaエンジニアになろう!
Javaの入門書で人気ナンバー1のスッキリわかるシリーズから、新たにサーブレット&JSPの入門書が登場! シリーズ共通の登場キャラ「湊くん」が再び学びの現場に帰ってくる!?
業務用Webシステム開発で幅広く利用されている「サーブレット」と「JSP」は、非常に強力である一方、独学が難しい技術です。HTMLやHTTPといった各種仕様、セッションやスコープをといった概念など、必要な知識は多岐に渡りますが、本書はそれらを仕組みやコツも含め、一歩ずつ着実に習得できるよう1冊にまとめました。シリーズで好評の「エラー解決・虎の巻」もしっかり収録していますので、つまずいても安心。姉妹書『スッキリわかるJava入門』『同 実践編』『スッキリわかるSQL入門』と合わせて本書を読めば、Javaとデータベースを駆使した本格的Webアプリケーションを自由に開発できる、ワンランク上のJavaエンジニアになれること間違いなし!
※ 本書掲載のソースコードは【ダウンロード】よりご取得いただけます
「読者アンケートに答える」「読者プレゼントに応募」の場合もこちらをご利用ください。
書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。
学校・法人一括購入に関するお問い合わせはこちらへ。
詳細
著者からのメッセージ
著者は新入研修をはじめ、多くのエンジニアの方々の「サーブレット/JSP」の学習を10年近くお手伝いしています。なかなか思うように学習が進まず苦悩する姿を目にするにつけ、なんとか学習を楽しくサポートできないものかと苦悩する中、生まれたのが本書になります。
執筆に際しては、特に以下の3点を意識しています。
1. 楽しく」学べる
サーブレット/JSPはJavaの応用分野のためかその参考書は解説が難しいものが多いです。本書は、『スッキリわかるJava入門』シリーズで好評の親しみやすいイラストと柔らかい文章で仕上げています。MVCモデルといった初心者がつまずきやすい分野も、楽しくマスターできると思います。
2.「ひとり」でも学べる
サーブレット/JSPの学習の難しさは文法ではなく、トラブルシューティングにあると感じています。本書では、多くの若手エンジニアがよく起こしてしまうエラーやトラブルの例とそれらの解決方法をできるだけ多く掲載し、1人でもトラブルシューティングができるようにしました。
3.「実務で役立つ」内容を学べる
サーブレット/JSPに関するすべての知識や技術を1冊の本にすることは非常に困難です。本書では、サーブレット/JSPの開発を行うプロジェクトに配属予定の方に向けて、配属前に学習しておくとよい内容を重点的に解説しています。
本書を通じて、読者の皆様がサーブレット/JSPのおもしろさに出会い、ひとつ上のエンジニアを目指す第一歩を踏み出すお手伝いができれば、著者としてこれ以上の喜びはありません。
著者プロフィール
国本大悟(くにもと・だいご)
文学部・史学科卒。大学では漢文を読みつつ、IT系技術を独学。会社でシステム開発やネットワーク・サーバ構築等に携わった後、フリーランスとして独立する。システムの提案、設計から開発を行う一方、プログラミングやネットワーク等のIT研修に力を入れており、大規模SIerやインフラ系企業での実績多数。著者は『スッキリわかるJava入門』(インプレスジャパン)。
目次
第0章 サーブレット/JSPを学ぶにあたって
0.1 Webアプリケーション開発を学ぼう
■第Ⅰ部 Webのしくみを知ろう
第1章 HTMLとWebページ
1.1 WebページとHTML
1.2 HTMLの基本文法
1.3 Webページの作成
1.4 HTMLリファレンス
1.5 この章のまとめ
1.6 練習問題
1.7 練習問題の解答
第2章 Webのしくみ
2.1 Webページの公開
2.2 Webを支える通信のしくみ
2.3 Webアプリケーションのしくみ
2.4 開発の準備をしよう
2.5 開発環境を体験する
2.6 この章のまとめ
2.7 練習問題
2.8 練習問題の解答
■第Ⅱ部開発の基礎を身に付けよう
第3章 サーブレットの基礎
3.1 サーブレットの基礎と作成方法
3.2 サーブレットクラスの実行方法
3.3 サーブレットクラスを作成して実行する
3.4 サーブレットの注意事項
3.5 この章のまとめ
3.6 練習問題
3.7 練習問題の解答
第4章 JSPの基本
4.1 JSPの基本
4.2 JSPの構成要素
4.3 JSPファイルの実行方法
4.4 JSPファイルを作成して実行する
4.5 この章のまとめ
4.6 練習問題
4.7 練習問題の解答
第5章 フォーム
5.1 フォームの基本
5.2 リクエストパラメータの取得
5.3 フォームを使ったプログラムの作成
5.4 リクエストパラメータの応用
5.5 この章のまとめ
5.6 練習問題
5.7 練習問題の解答
■第Ⅲ部 本格的な開発を始めよう
第6章 MVCモデルと処理の遷移
6.1 MVCモデル
6.2 処理の転送
6.3 この章のまとめ
6.4 練習問題
6.5 練習問題の解答
第7章 リクエストスコープ
7.1 スコープの基本
7.2 リクエストスコープの基礎
7.3 リクエストスコープを使ったプログラムの作成
7.4 リクエストスコープの注意点
7.5 この章のまとめ
7.6 練習問題
7.7 練習問題の解答
第8章 セッションスコープ
8.1 セッションスコープの基礎
8.2 セッションスコープを使ったプログラムの作成
8.3 セッションスコープのしくみ
8.4 セッションスコープの注意点
8.5 この章のまとめ
8.6 練習問題
8.7 練習問題の解答
第9章 アプリケーションスコープ
9.1 アプリケーションスコープの基本
9.2 アプリケーションスコープを使ったプログラムの作成
9.3 アプリケーションスコープの注意点
9.4 スコープの比較
9.5 この章のまとめ
9.6 練習問題
9.7 練習問題の解答
第10章 アプリケーション作成
10.1 作成するアプリケーションの機能と動作
10.2 開発の準備
10.3 ログイン機能を作成する
10.4 メイン画面を表示する
10.5 ログアウト機能を作成する
10.6 投稿と閲覧の機能を作成する
10.7 エラーメッセージの表示機能を追加する
10.8 この章のまとめ
■第Ⅳ部 応用的な知識を深めよう
第11章 サーブレットクラスの実行のしくみとフィルタ
11.1 サーブレットクラス実行のしくみ
11.2 リスナー
11.3 フィルタ
11.4 この章のまとめ
11.5 練習問題
11.6 練習問題の解答
第12章 アクションタグとEL式
12.1 インクルードと標準アクションタグ
12.2 EL式
12.3 JSTL
12.4 この章のまとめ
12.5 練習問題
12.6 練習問題の解答
第13章 JDBCプログラムとDAOパターン
13.1 データベースとJDBCプログラム
13.2 DAOパターン
13.3 どこつぶでデータベースを利用する
13.4 この章のまとめ
13.5 練習問題
13.6 練習問題の解答
■第Ⅴ部 設計手法を身に付けよう
第14章 Webアプリケーションの設計
14.1 Webアプリケーションの設計とは
14.2 プログラムを完成させる
14.3 この章のまとめ
付録A Eclipseの初期設定と操作手順
A.1 Eclipseの起動と初期設定
A.2 Eclipseの起動とパースペクティブ
A.3 ファイルの文字コード
A.4 動的Webプロジェクトとサーバ
A.5 ファイルの作成と実行
A.6 JARファイルの配置
付録B フォーム作成の注意点
B.1 フォームの作り方
付録C エラー解決・虎の巻
C.1 エラーとの上手な付き合い方
C.2 トラブルシューティング
付録D 補足
D.1 JavaEEの基礎知識
D.2 Webアプリケーションとデプロイ
D.3 リクエスト先の指定方法
D.4 本書のデータベース環境を構築
索引
COLUMN
・DOCTYPE宣言がない場合
・文字コード
・CSSとstyle属性
・アプリケーションサーバソフトウェアの呼び方
・ポート番号
・Webサーバとアプリケーションサーバの併用74
・Webアプリケーションに関する設定の方法
・JSPファイルから作成される
・サーブレットクラスの場所
・JSPコメントとHTMLコメントの違い
・JSPの文法エラー
・GETリクエストで全角文字を表示する
・正規表現
・2種類のモデル
・MVCモデルと分業
・リクエストとサーブレットクラスの対応
・Eclipseの内部ブラウザの変更
・ブラウザの複数ウインドウとセッションID
・ステートフルな通信
・セッションスコープと直列化
・データベースvsアプリケーションスコープ
・コンテキスト
・ArrayListの基本的な使い方
・JSPファイルのインスタンス化
・スレッドとサーブレット
・サーブレットのバージョンにご用心
・JSPファイルとHTMLファイルへのフィルタ適用
・JSPファイルのバージョンにご用心369
・H2Database
・デザインパターン
・コネクションプーリング
・機能要件と非機能要件
・単体テストとJUnit
・JavaEEアプリケーションサーバ
・サーブレット3.0でのweb.xmlの生成
関連書籍
ダウンロード
-
本書掲載のソースコードは、著者運営サイトでダウンロードできます。
▼スッキリわかるシリーズ ダウンロードページ
https://sukkiri.jp/books/sukkiri_servlet/sukkiri_servlet_ download.html
お詫びと訂正
誤記のためにご迷惑をおかけし、誠に申し訳ございません。
- 12ページ 本文1行目
- [誤]
本書に掲載しているすべてのソースコード - [正]
本書に掲載している主要なソースコード -
備考:
※ダウンロードデータは、本文で解説しているソースコードになります。練習問題のソースコードは含まれていません。
- 【 第3刷にて修正 】
- [誤]
- 48ページ 練習1-2の解答 10行目
- [誤]
経験豊富なエンジニア。<br>開発のかたわら、若手エンジニアの教育係もしている。実は結構お酒好き。 - [正]
経験豊富なエンジニア。<br>開発のかたわら、若手エンジニアの教育係もしている。<br>実は結構お酒好き。
- [誤]
- 85ページ ページ上部、菅原のセリフ1行目
- [誤]
これを覚れば、 - [正]
これを覚えれば、
- [誤]
- 99ページ コード3-5 現在の9行目下に1行追加
- [誤]
9 out.println("</head>"); - [正]
9 out.println("</head>");
10 out.println("<body>")
※以降行番号1行ずつ繰り下がり
- [誤]
- 103ページ サーブレットクラスの定義方法について(1つ目の個条書き)
- [誤]
javax.http.servletHttpSerlvetを継承する。 - [正]
javax.http.servlet.HttpSerlvetを継承する。
- [誤]
- 103ページ HTMLのレスポンスについて(2つ目の個条書き)
- [誤]
PrintWriter() - [正]
PrintWriter
- [誤]
- 104ページ 練習3-1、ソースコードの10行目
- [誤]
respopnse - [正]
response - 【 第4刷にて修正 】
- [誤]
- 108ページ ページ中程の本文、JSPの略称
- [誤]
Java Server Page - [正]
JavaServer Pages
- [誤]
- 113ページ 図4-3内
- [誤]
<%! ・・・ %> - [正]
<%--・・・--%> - 【 第2刷にて修正 】
- [誤]
- 115ページ 上の構文囲み「JSPコメント」内
- [誤]
<%!-- ・・・ --%> - [正]
<%--・・・--%> - 【 第2刷にて修正 】
- [誤]
- 115ページ 中段、リスト番号なしのリストの1行目
- [誤]
<%!-- 変数のサンプル --%> - [正]
<%-- 変数のサンプル --%> - 【 第2刷にて修正 】
- [誤]
- 118ページ コラム中、下のリストの1行目
- [誤]
<%!-- JSPコメント --%> - [正]
<%-- JSPコメント --%> - 【 第2刷にて修正 】
- [誤]
- 126ページ 3つ目の見出し
- [誤]
サーブレットクラスの実行について - [正]
JSPファイルの実行について
- [誤]
- 132ページ リスト5-1の1行目
- [誤]
<form action="/example/formSampleServlet" method="post”> - [正]
<form action="/example/FormSampleServlet" method="post"> - 【 第5刷にて修正 】
- [誤]
- 146ページ コラム「GETリクエストで全角文字を表示する」についての補足
- [誤]
補足)Tomcat8.0では、「ISO-8859-1(latin1)」ではなく「UTF-8」になりました。 - [正]
- [誤]
- 155ページ ページ中程構文囲み「リクエスト先の指定に「?名前 =値」を付ける」の2行目
- [誤]
<form action="リクエスト先?名前=値" method="get"> - [正]
<form action="リクエスト先?名前=値" method="post"> - 【 第5刷にて修正 】
- [誤]
- 155ページ ページ中程構文囲み「リクエスト先の指定に「?名前 =値」を付ける」の5行目
- [誤]
※GETリクエスト時のみ可能 - [正]
※フォームを使う場合、method="post"とする - 【 第5刷にて修正 】
- [誤]
- 155ページ ページ下端「・フォームで送る例」リスト内2行目
- [誤]
method="get"> - [正]
method="post"> - 【 第5刷にて修正 】
- [誤]
- 177ページ 下から5行目。2つ目の例
- [誤]
リダイレクト先が同じサーバである例(JSP ファイルの場合) - [正]
リダイレクト先が同じサーバである例(サーブレットクラスの場合) - 【 第5刷にて修正 】
- [誤]
- 179ページ 本文上から8行目
- [誤]
「http://localhost:8080/example/RedirectServlet.java」にブラウザで - [正]
「http://localhost:8080/example/RedirectServlet」にブラウザ - 【 第8刷にて修正 】
- [誤]
- 197ページ リスト7-2、6行目、9行目
- [誤]
リクエストコープ - [正]
リクエストスコープ - 【 第4刷にて修正 】
- [誤]
- 199ページ リスト7-3の1行目
- [誤]
<%@ page import="bean.Human" %> - [正]
<%@ page import="model.Human" %> - 【 第5刷にて修正 】
- [誤]
- 202ページ 図7-6、右下
- [誤]
リクエストコープ - [正]
リクエストスコープ - 【 第4刷にて修正 】
- [誤]
- 202ページ 図7-6、図の下方
- [誤]
healthCheck.jsp - [正]
healthCheckResult.jsp - 【 第6刷にて修正 】
- [誤]
- 205ページ リスト7-6 34、35行目
- [誤]
health.setHeight Double.parseDouble(height);
health.setWeight Double.parseDouble(weight); - [正]
health.setHeight (Double.parseDouble(height));
health.setWeight (Double.parseDouble(weight)); - 【 第2刷にて修正 】
- [誤]
- 205ページ リスト7-6、29行目と30行目のコメントが逆
- [誤]
String weight = request.getParameter("weight"); // 身長
String height = request.getParameter("height"); // 体重 - [正]
String weight = request.getParameter("weight"); // 体重
String height = request.getParameter("height"); // 身長 - 【 第4刷にて修正 】
- [誤]
- 210ページ 図7-7 左上、ブラウザイラストからの吹き出し内テキスト
- [誤]
「カードへ」(送信)ボタンをクリック - [正]
「カートへ」(送信)ボタンをクリック
- [誤]
- 210ページ 図7-7、右半分、2個所
- [誤]
リクエストコープ - [正]
リクエストスコープ - 【 第4刷にて修正 】
- [誤]
- 211ページ 図7-8、右半分、2個所
- [誤]
リクエストコープ - [正]
リクエストスコープ - 【 第4刷にて修正 】
- [誤]
- 222ページ 「セッションスコープからインスタンスを削除する」の構文内
- [誤]
request.removeAttribute("属性名") - [正]
session.removeAttribute("属性名") - 【 第4刷にて修正 】
- [誤]
- 222ページ リスト8-2の1行目
- [誤]
<%@ page import="bean.Human" %> - [正]
<%@ page import="model.Human" %> - 【 第5刷にて修正 】
- [誤]
- 249ページ 9.1.3の1行目
- [誤]
・・・javax.servlet.http.ServletContextインスタンスです。 - [正]
・・・javax.servlet.ServletContextインスタンスです。 - 【 第5刷にて修正 】
- [誤]
- 250ページ 「アプリケーションスコープを取得する」の一つ目の米印
- [誤]
javax.servlet.http.ServletContextをインポートする必要がある。 - [正]
javax.servlet.ServletContextをインポートする必要がある。 - 【 第5刷にて修正 】
- [誤]
- 252ページ リスト9-2の1行目
- [誤]
<%@ page import="bean.Human" %> - [正]
<%@ page import="model.Human" %> - 【 第5刷にて修正 】
- [誤]
- 254ページ ページ上方の4つの個条書きのうち4項目の冒頭
- [誤]
minadoIndex.java - [正]
MinatoIndex.java
- [誤]
- 255ページ リスト9-3
- [誤]
1 package model;
2
3 public class SiteEV { - [正]
1 package model;
2 import java.io.Serializable;
3
4 public class SiteEV implements Serializable {
※以降行番号ずれる - 【 第5刷にて修正 】
- [誤]
- 273ページ 10.2.4 デフォルトページの最初の会話文2行目
- [誤]
dokoTsubu/index.jsp やな...。 - [正]
docoTsubu/index.jsp やな...。 - 【 第4刷にて修正 】
- [誤]
- 274ページ 下から4行目
- [誤]
http://localhost:8080/example/docoTsubu/ - [正]
http://localhost:8080/docoTsubu/ - 【 第6刷にて修正 】
- [誤]
- 281ページ リスト10-7の13-14行目
- [誤]
13 </head>
14 </head> - [正]
13 </head>
14
- [誤]
- 292ページ リスト10-12の8-9行目
- [誤]
8 </head>
9 </head> - [正]
8 </head>
9
- [誤]
- 317ページ 本文下から3行目のURL
- [誤]
http://localhost:8080/examle/CounterServlet - [正]
http://localhost:8080/example/CounterServlet - 【 第5刷にて修正 】
- [誤]
- 328ページ 見出し「解説② リスナーインタフェースとそのメソッドの実装」の下の本文、上から5行目
- [誤]
今回実装するSevletContextListener - [正]
今回実装するServletContextListener
- [誤]
- 328ページ ページ下方、メソッド表の下の本文、上から3行目
- [誤]
正体であるSevletContextインスタンス - [正]
正体であるServletContextインスタンス
- [誤]
- 337ページ ページ中程「リスナー」項目の2行目
- [誤]
フィルタを利用する。 - [正]
リスナーを利用する。 - 【 第5刷にて修正 】
- [誤]
- 338ページ 練習11-1の最初の本文の下にある3の個条書きのうち3項目
- [誤]
ServletContextEventインタフェース - [正]
ServletContextListenerインタフェース
- [誤]
- 348ページ includeディレクティブの囲みの中
- [誤]
<%@ include file="インクルード"先 %> - [正]
<%@ include file="インクルード先" %> - 【 第6刷にて修正 】
- [誤]
- 361ページ 表12-5の3行目
- [誤]
編集出力 - [正]
変数出力 - 【 第6刷にて修正 】
- [誤]
- 366ページ 本文下から3行目
- [誤]
紹介します(リスト12-4) - [正]
紹介します(リスト12-6) - 【 第3刷にて修正 】
- [誤]
- 371ページ 練習12-1の問題文
- [誤]
次の文章およびリストの①~⑧に適切な言葉を入れてください。 - [正]
次の文章およびリストの①~⑦に適切な言葉を入れてください。 - 【 第6刷にて修正 】
- [誤]
- 404ページ リスト13-9
- [誤]
ダウンロードデータ「3580.zip」にリスト13-9の「Main.java」が含まれていない - [正]
ダウンロードデータを「3580_ver1.2.zip」にアップデートし「Main.java」を追加。
- [誤]
- 405ページ リスト13-9の37行目(ページ一番下の行)
- [誤]
respose.sendRedirect("/docoTsubuDAO/"); - [正]
respose.sendRedirect("/docoTsubu/"); - 【 第3刷にて修正 】
- [誤]
- 406ページ リスト13-9 Main.java(servlet パッケージ)の63-70行目
- [誤]
備考参照(登場順の入れ替え) - [正]
-
備考:
【誤】
63 // つぶやきリストを取得して、リクエストスコープに保存
64 GetMutterListLogic getMutterListLogic =
new GetMutterListLogic();
65 List<Mutter> mutterList = getMutterListLogic.execute();
66 request.setAttribute("mutterList", mutterList);
67 } else {
68 // エラーメッセージをリクエストスコープに保存
69 request.setAttribute("errorMsg",
"つぶやきが入力されていません");
70 }
↓
【正】
63 } else {
64 // エラーメッセージをリクエストスコープに保存
65 request.setAttribute("errorMsg",
"つぶやきが入力されていません");
66 }
67 // つぶやきリストを取得して、リクエストスコープに保存
68 GetMutterListLogic getMutterListLogic =
new GetMutterListLogic();
69 List<Mutter> mutterList = getMutterListLogic.execute();
70 request.setAttribute("mutterList", mutterList); - 【 第4刷にて修正 】
- [誤]
- 407ページ リスト13-9と会話の間に下記を追加
- [誤]
※誤記ではありませんが、12章がJSPメインということで興味がなく省略される方への補足として下記を追加 - [正]
main.jspがリスト12-6(P366)ではなく、リスト10-17(P304)の状態の場合は、リクエストスコープからつぶやきリストを取得するように変更する必要があります。
─────────
List<Mutter> mutterList = (List<Mutter>) request.getAttribute("mutterList");
───────── - 【 第3刷にて修正 】
- [誤]
- 418ページ 本文上から3行目
- [誤]
プログラミグ - [正]
プログラミング - 【 第3刷にて修正 】
- [誤]
- 469ページ 1行目
- [誤]
この例ではリスナー「FilterSample」 - [正]
この例ではフィルタ「FilterSample」
- [誤]
- 471ページ 「A.6.1」の①の本文2行目
- [誤]
ファイルです(x.x.xはバージョン番号)。 - [正]
ファイルです(x.xはバージョン番号)。 - 【 第7刷にて修正 】
- [誤]
- 471ページ 「A.6.1」の①の個条書きのファイル名
- [誤]
・javax.servlet.jsp.jstl-api-x.x.x.jar
・javax.servlet.jsp.jstl.x.x.x.jar - [正]
・jstl-api-x.x.jar
・jstl-impl-x.x.jar - 【 第7刷にて修正 】
- [誤]
- 514ページ 図D-3のWEB-INF下のファイル名
- [誤]
xeb.xml - [正]
web.xml - 【 第5刷にて修正 】
- [誤]
- 528ページ 索引「記号」の2行目
- [誤]
<%!-- --%> → JSPコメント - [正]
<%-- ~ --%> → JSPコメント - 【 第2刷にて修正 】
- [誤]
お問い合わせ
書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。