Javaディスカッション(過去の実施例)

目次

No.1:ソースコードの説明(Java超入門)

課題1

課題についての確認事項

課題1プログラムが何をするか、簡略に20秒で上司に説明してください
(上司はプログラミング未経験者とする)

(解答例)変数aと、キーボード入力した値を格納した変数bの、どちらがより大きいかを判定して対応するメッセージを表示するプログラムです

③でsc.nextLine()ではなくsc.nextInt()を使用している理由は何故ですか

変数bがint型を扱う変数なので、キーボード入力した値をint型として扱うsc.nextInt()を使用しています

課題2

課題についての確認事項

課題2プログラムが何をするか、簡略に20秒で上司に説明してください
(上司はプログラミング未経験者とする)

(解答例)2つの繰り返し文を使って、それぞれが何回繰り返したかを画面に出力するプログラムです

カウント用変数iはいくつまで加算されるか

6

④の文言は何回画面表示されるか

5回表示されます

変数countはいくつまで加算されるか

5

⑦の文言は何回画面表示されるか

4回表示されます

No.2:ソースコードの説明(Java入門)

課題1

課題についての確認事項

課題1プログラムが何をするか、簡略に20秒で上司に説明せよ
(上司はプログラミング未経験者とする)

(解答例)2つの変数の合計を計算するメソッドを呼び出し、戻ってきた計算結果をコンソールに出力するプログラムです

③で設定している引数の変数名と、⑤のメソッド宣言時の仮引数名は同じ変数a,bだが、
違う変数名が引数に設定された場合もメソッドは機能するか

③の実引数と⑤の仮引数はそれぞれ別のメソッド内で定義されているものなので、違う変数名でもデータ型さえ揃っていれば問題なく使えます。

課題2

課題についての確認事項

課題2プログラムが何をするか、簡略に20秒で上司に説明せよ
(上司はプログラミング未経験者とする)

(解答例)作成した配列をメソッドに渡し、コンソール上に全ての要素を出力させるプログラムです

aryData.lengthは今回いくつになるか

lengthは配列の要素数なので、3

iはいくつまでカウントされるか

3

No.3:基本データ型と配列(Java入門)

課題1

過去の受講生が描いたイメージ図(必ずしも正しいとは限りません)

課題についての確認事項

課題1プログラムが何をするか、簡略に20秒で上司に説明せよ
(上司はプログラミング未経験者とする)

(解答例)設定した値をメソッドに渡し、1からその値未満の全ての整数の合計値を取得して、画面出力するプログラムです

totalメソッドを呼び出したとき、引数で与えられた変数valの値がどのようにしてtotalメソッド内の仮引数valに渡されるか?

変数valの箱の中に入っている値がコピーされて、メソッドの仮引数に代入されます
(totalメソッド側の)int val = (呼び出し元の)val; というような処理を行っているイメージです

totalメソッドの戻り値sumがどのようにして変数rev_sumに代入されるか?

totalメソッドの戻り値sumの箱の中に入っている値がコピーされて、変数rev_sumに代入されます

⑨行の 「 return sum; 」を説明しなさい。
また戻り値はどこに返すのでしょうか

変数sumの定義場所ではなく、変数sumに格納されている値を返す。戻り値は呼び出し側に返す

⑨行の 「 return sum; 」にて、sumのデータ型は?

int型

val変数がtotalメソッド内と外に2つあります。
その2つは同じ変数ですか?異なるならなぜ?

別のメソッド内で定義されてるものなので、異なる変数です

④行の「 int total ( int val) 」 にて、この1行のみでわかる情報(内容)を説明しなさい

戻り値の型(return する値のデータ型)、メソッド名、変数名、仮引数

ローカル変数とは?
このサンプルでローカル変数があれば、2つ挙げてください

メソッド内で定義している変数。呼び出し元のローカル変数はvalとrev_sumの2つ

変数 i を使用できるのはどの範囲か説明しなさい

totalメソッド内で定義しているfor文内のみ

基本データ型とは何かを説明しなさい

変数を定義した時に、その中に具体的な値(数値や文字など)が格納されている型のこと

課題2

過去の受講生が描いたイメージ図(必ずしも正しいとは限りません)

課題についての確認事項

課題2プログラムが何をするか、簡略に20秒で上司に説明せよ
(上司はプログラミング未経験者とする)

(解答例)呼び出し元で作成した配列を、multiple2Arrayメソッドで各要素を2倍し、displayメソッドでコンソールに表示するプログラムです

課題3の中で配列の実体は何個作られているか?
それはどこか?

1個。配列変数numArrayと配列変数newArrayは同じ配列の先頭番地を参照している

配列実体が作成される場合を2つ説明しなさい。

①配列を初期化する時 ②new演算子を使ってメモリ領域を確保し、格納する時

基本データ型と参照型(配列など)の違いを踏まえて、以下3つのケースについての違いを説明しなさい
①基本データ型で変数が作成されるケース
②参照型(配列)で配列変数が作成されるケース
③参照型(配列)で配列本体が作成されるケース

①作成した変数の中に具体的な値を入れる準備が整う
②作成した変数の中に配列本体の場所情報を入れる準備が整う
③配列本体のメモリを確保し、場所情報が割り当てられる

配列は基本データ型か或いは参照型かどちら?

参照型

基本データ型の種類を2つ挙げなさい

int型、boolean型

int[] numArray = {1,2,3,4}のイメージ図を作成した時に、numArray配列変数の値として何か入っているか説明しなさい

配列本体の場所情報(アドレス)

なぜ、numArray変数とその配列実体が紐づけられるかその根拠を説明せよ

numArray変数の値とその配列実体の先頭アドレス(番地)が同じであるため

int[ ] multiple2Array ( int[] arr) にて、この1行のみでわかる情報(内容)を説明しなさい

戻り値の型(return xxxのデータ型)、メソッド名、変数名、仮引数

multiple2Arrayメソッドを呼び出したとき、引数で与えられた配列変数numArrayの値が
totalArrayメソッドの仮引数arr配列変数の値として何か代入(コピー)されるか?

numArray配列変数の値(箱の中に入っている値)がコピーされて、メソッド内の仮引数に代入される。
それによって、totalArrayメソッドからでも配列実体を参照することができる。

配列変数newArrayには具体的にどのような値が入っているのか?

numArray宣言時に生成された配列実体の先頭番地

multiple2Arrayメソッドの戻り値、配列変数arrがどのようにして配列変数newArrayに代入されるか?

multiple2Arrayメソッドの戻り値配列変数arrの値(箱の中に入っている値)が、呼び出し側に返されてから、配列変数newArrayに代入される。

「 return arr; 」を説明しなさい。また戻り値はどこに返すのでしょうか
※イメージ図を使って説明する

変数arrに格納されている場所情報を返す。戻り値は呼び出し側に返す

「 return arr; 」にて、arrのデータ型は?

int型の配列

まとめ

Java入門単元についての確認事項

基本データ型と参照型(配列)の違いを説明せよ

基本データ型は変数に具体的な値が格納されており、参照型は変数に実体の場所情報が格納されている

メソッドを呼び出す際に引数を渡し、呼ばれるメソッド側では引数を受け取ります。
また、戻り値のあるメソッドは戻り値を返します。
基本データ型と参照型(配列)、それぞれ引数は何を受け取り、何を返すか

両方とも変数の値を受け取り、返す。しかし、基本データ型は変数の値が、値そのもの。配列変数の値は、場所情報で、具体的な値は配列本体の要素にある。

No.4:インスタンスメンバとクラスメンバ(Java基礎)

課題1

過去の受講生が描いたイメージ図(必ずしも正しいとは限りません)

課題についての確認事項

課題1がどのような処理を行うプログラムなのか、簡潔に説明してください

(解答例)Employeeクラスのオブジェクトを生成し、氏名や人数を表示するプログラムです

Employee emp1 = new Employee(“神田”);について
変数とオブジェクトを関連付けるまでの流れを説明してください
(変数にはオブジェクトの何が代入されるのかが分かるように)

右辺でオブジェクトを作成してから、そのオブジェクトの番地情報をEmployee型emp1変数に代入する。
それにより、変数とオブジェクトが関連付けられる。

public Employee(String name) {・・・} このメソッドを専門用語でどう呼ぶか

コンストラクター

public Employee(String name) {・・・} がコンストラクターである場合、そう判断できる理由を2つ挙げてください

①クラスと同じ名前である ②戻り値の型が書かれていない

emp1.plusCount();を実行した後、変数countの値はイメージ図のどこが変わるか説明してください

雛形部分であるEmloyeeクラス内で定義されている変数countの値が加算される

変数countはオブジェクトの中に生成されているか、説明してください
(生成されていない場合はその理由も併せて説明してください)

クラス変数である為、オブジェクト内には生成されない

Employee.plusCount()という形で呼び出すことは可能であるか、説明してください
(呼べない場合は、その理由も併せて説明してください)

plusCount()メソッドはインスタンスメソッドなので、どのオブジェクト内に生成されたものなのかという情報が必要である為、呼び出せない

System.out.println(“名前:” + emp1.getName());を説明してください(thisの意味も交えて)

thisはオブジェクト自身を指す。ここではemp1

emp1.showCount();という形で呼び出すことは可能であるか、説明してください
(呼べない場合は、その理由も併せて説明してください)

呼べるが、適切ではない(emp1がEmployeeクラス型なので、Eclipse側が忖度してEmployee内のクラスメソッドの仕様を許可してくれる)

Employee emp2 = emp1;がどのような処理か説明してください

Employee型の変数emp2を作成し、emp1に格納されている場所情報を代入する

emp1、emp2のオブジェクトの関係を説明してください

同じオブジェクト本体を参照している

emp1.setName(“上野”);がどのような処理か説明してください

emp1が参照しているオブジェクトのインスタンスメソッドsetNameに引数”上野”を渡して呼び出す。
その結果、emp1が参照しているオブジェクトのインスタンス変数nameが”上野”に上書きされる。

emp2.setName(“上野”);という形で呼び出そうとした場合、どのような処理結果になるか説明してください

emp1として呼び出した場合と同じ動きになる

Employee.setName(“上野”);という形で呼び出そうとした場合、どのような処理結果になるか説明してください

コンパイルエラーになる(インスタンスメソッドなので、オブジェクト生成後のオブジェクト変数を指定しないと使用できない)

まとめ

オブジェクト、インスタンスメンバとクラスメンバについての確認事項

Employeeクラスのオブジェクトはデータ型か、参照型か?
また、オブジェクト変数には何の値が代入されるのか?

参照型。Employee型の変数にはEmployeeオブジェクトの場所情報が格納される

インスタンスメンバとクラスメンバの違いは何か?

インスタンスメンバは生成されたオブジェクトに関連付けられるメンバで、クラスメンバはクラスに関連付けられるメンバ

Employeeクラスのフィールド変数には初期値を設定していないが、
なぜ初期値を設定しなくても問題ないのか

フィールド変数に初期値を定義していない場合、デフォルトとして変数の型ごとの初期値が代入される

フィールド変数count、nameにはそれぞれ初期値として何の値が入っているのか?
またなぜそのような値が入っているのか?

countには0、nameにはnullが入っている。変数countはint型なので、int型の初期値0が代入される。変数nameの型はString型で、String型は参照型なので、参照型の初期値nullが代入される。

nullとはどういう意味か?

「何も参照していない」ということを表す

thisとはどういう意味か?

「オブジェクト自身の」ということを表す

今回のソースコードでEmployeeクラスのオブジェクト変数は何個生成されているか?

2個(emp1とemp2)

今回のソースコードでEmployeeクラスのオブジェクトの実体は何個生成されているか?

1個(オブジェクトの実体はnew クラス型();のタイミングで1つ生成されるため)

変数emp2には何が代入されているのか

emp1に代入されているオブジェクトの場所情報。そのため、変数emp2は変数emp1と同じEmployeeオブジェクトを参照することができる

No.5:ファイル読み込みとリスト渡し(Java基礎)

課題1

過去の受講生が描いたイメージ図(必ずしも正しいとは限りません)

課題についての確認事項

当ソースコードが何の処理を行っているかポイントを抑えて、1分程度を目安に上司に簡潔に説明してください
(上司はプログラムをまったく知らないものとする)

(解答例)userid.csvファイルを読み込み、全行のデータを表示した後、idが12のデータを検索した結果の値を表示するプログラムです

ArrayList listId = new ArrayList(); にて、Stringは何を意味しているか?
イメージ図を用いて説明してください

ArrayList本体の要素に格納されるデータの型

ArrayList本体の要素の値は何になるか?

null

ArrayListのオブジェクトを生成すると、配列は最初に何個作られた状態になるか?

10個

ArrayListオブジェクトを生成したとき、配列内の要素には初期値として何が入っているか?

そのデータ型の規定値(デフォルトの値)

配列とArrayListの違いを簡潔に説明してください

配列は実体を作った後は要素数を増減させることができない。ArrayListは適宜メソッドを使って要素の追加・削除ができる

プログラムをまったく知らない上司に、readFromFileメソッドの概要を簡潔に日本語で説明してください

userid.csvファイルを読み込み、1行ずつデータを取得して、idだけのArrayListと名前だけのArrayListを生成しています

readFromFileメソッドに引数は2つあります。それぞれ受け取る値を具体的に説明してください
また、イメージ図を確認しつつ、arrIdとarrNameの変数には何か入ってくるかを説明してください

mainメソッドのlistIdの場所情報が格納されるarrIdと、listNameの場所情報が格納されるarrName。いずれもString型のArrayListの場所情報が格納される

String[] strArr = new String[2]にて、配列本体は作成されるのか?作成される場合、その理由は?

new演算子を使っているので配列本体を生成している

String strLine = nullにて、nullは何を意味するか?

「何も参照していない」ということを表す

hasNextLine()メソッドは、どのクラスに配属しているか?

Scannerクラス

hasNextLineメソッドの役割は?また戻り値は何か?

読み込んだデータの現在の読み出し行があるかどうかをチェックし、データがあればtrue、なければfalseを返す。

⑧行にてSplitメソッドの戻り値が予測できるか?

String型の配列の場所情報である、と予測できる。ただし、その配列の要素数は、元になったString型のデータの内容に依存する為、断言はできない。
(その為、splitメソッドを呼んだ後に要素数を確認する、という形でエラーチェックを設けることが多い)

splitメソッドとはどのようなメソッドか?また、splitメソッドの戻り値の型は何か?

Stringクラスに属するメソッドで、引数で与えられた文字列を基準に文字列の分割をおこない、分割されたデータを左側から順番に配列に格納する。
戻り値はString型の配列のため、配列の先頭番地の情報が返される。

String[] strArr = new String[2];を実行して生成された配列の場所情報とsplitメソッドの戻り値として渡された配列の場所情報は同じか?

違う場所情報を持っている。splitメソッド内部で分割したデータの数分だけの配列を新しく作成し、そのsplitメソッド内部で作成した配列の先頭番地の情報を返すため、場所情報が変わっている

add()メソッドの役割を踏まえて、どのようにリストに追加されるか説明してください

add()メソッドはArrayList配列の末尾に引数で与えられたデータを挿入するので、最後の要素として引数に設定した値が追加されていく

String[] arr2 = getUser12Info(listId, listName)にて、getUser12Infoメソッドの戻り値を予測しなさい

String型の配列の場所情報である、と予測できる

プログラムをまったく知らない上司に、getUser12Infoメソッドの概要を簡潔に日本語で説明してください

(解答例)IDと氏名を管理するArrayListを受け取って、特定のIDに一致する行のIDと氏名を1つの配列にまとめて、呼び出し元に返却します

getUer12Infoメソッドに引数は2つありますが、
それぞれ受け取る値をイメージ図を踏まえて具体的に説明してください

mainメソッドのlistIdの場所情報が格納されるarrIdと、listNameの場所情報が格納されるarrName。いずれもString型のArrayListの場所情報が格納される

break文が実行された後、最終的に変数iの値はいくつか

1(breakは繰り返し処理の中断になるので、i++には戻らない)

return arr文にて、何を返すか?また、どこへ返すか?

String型の配列の場所情報。呼び出し元であるmainメソッドに戻している。

mainメソッド内の変数arr2には何が代入されているか?

getUser12Infoで作成し返却したString型の配列の場所情報

getUser12Infoメソッド内部で作成された配列の場所情報と、
getUser12Infoメソッドの戻り値として渡された配列の場所情報は同じか?

同じ場所情報を持っている。そのため、mainメソッド内の配列変数arr2から、getUser12Inforメソッド内で作成した配列を参照することができる。

No.6:リスト内オブジェクト渡しと受け取り(JDBC)

課題1

過去の受講生が描いたイメージ図(必ずしも正しいとは限りません)

課題についての確認事項

PersonDAO objDao = new PersonDAO(); で、オブジェクトを作成する理由は?

objDao.selectAll();のように、PersonDAOクラス内のインスタンスメソッドselectAll()にアクセスするため

ArrayList list1 = null;にて、<>内のPersonは何を意味しているか?

リストの各要素の値がPerson型であることを意味している。
※「リストの各要素の値がPerson型オブジェクトである」というのは、実際にはリストの値にオブジェクト実体そのものが入るのではなく、オブジェクトの番地情報が値として入っていることを意味している

Pの変数を、繰り返し文の外で宣言するのではなく、繰り返し文の中に宣言するとどうなるか?
(p = new Person();の代わりに、Person p = new Person();に変更するとどうなるか)

変数pが繰り返しの回数分作成される

String sql = “SELECT * FROM personinfo”; にて SQLの意味を日本語で説明してください。
また * の意味も説明してください

personinfoの全てのカラムのデータを取得せよ、という意味のSQLで、*は「全てのカラム(列)」という意味

参照系(SELECT)と更新系(update,delete,insert)は、実行メソッドが異なる。
参照系ではexecuteQuery()を使用するが、更新系で使うメソッド名は何か?その場合の戻り値は何か?

executeUpdate()メソッドを使う。戻り値はint型で、クエリを実行した結果影響を受けた(更新・削除された)行数が戻ってくる

nextメソッドとは役割は? また戻り値として何が返ってくるか?

レコードポインタが指している列を1つ次の行に移動し、その行にデータがあるかどうかをチェックするメソッドで
戻り値はboolean型でデータがあった場合にtrue、無かった場合にfalseが返ってくる

p = new Person(); を右辺から説明してください

オブジェクトを作成し、そのオブジェクトの番地情報をp変数に代入する。 

p = new Person(); にて、左辺の変数pのデータ型は?

Person型

p.setName(rs.getString(“name”)); にて、 「”name”」は何を意味しているか?

SELECT句で指定した(*で自動的に取ってきた)カラム名nameを意味する。 

「rs.getString(“name”)」の部分で何を取得するか?

SELECT文で取得したname列のデータを文字列型にしたもの

p.setName(rs.getString(“name”)); にてgetStringメソッドはどのクラスにメソッドなのか?

ResultSetクラス

p.setName(rs.getString(“name”)); とp.setAge(rs.getInt(“age”));にて、getStringとgetIntを使い分けているが、
何を元に判断して使い分けるか?

setNameメソッドとsetAgeメソッドの引数がそれぞれString型、int型なので、上記のような使い分けをしている
(もしsetAgeメソッドの引数がString型で、中でInteger.parseInt()等を使って対応している時は、getString(“age”)で取得する必要がある)

selectAllメソッドのlist2.add(p); はどのようなことを行っているのか?

変数pの値をArrayList配列の末尾に挿入している。そのため、ArrayList要素からPerson型のオブジェクトを参照することができる。

今回の場合、Personオブジェクトは何個生成されているか?

3個。selectAllメソッド内部でPersonオブジェクトを3回生成している。

return list2; にて、何をどこに返すのか説明してください

Person型のArrayListの場所情報を呼び出し元であるmainメソッドに返却している

mainメソッドにて、iが0の場合、 p = list1.get(i); にて何をperson型p変数に返すのか説明してください

ArrayList内部にある、引数として与えられたi番目の要素を返している。
今回の場合は各Person型オブジェクトの場所情報を返しているため、変数pからそのオブジェクトを参照することができる。

まとめ

JDBC単元についての確認事項

DAOおよびDTOとは何か、説明してください。

Data Access Object…DBの詳細を開示することなく特定の操作をするインタフェースを提供するオブジェクト
Data Transfer Object…データの集合とその読み書き手段のみからなるシンプルなオブジェクト

以下の各用語について、説明してください。
・JDBC
・DBサーバ
・DBクライアント
・ドライバ

・JDBC…JavaとDBの接続の為のAPI(Application Programming Interface)、データ操作を可能にする
・DBサーバ…DBクライアントからのリクエストを受け、適切に解析・処理をして、DBクライアントにレスポンスを返す役割を果たすコンピュータ
・DBクライアント…DBを利用するコンピュータ
・ドライバ…実際にDBに接続し、DB操作を実行する。

No.7:ServletからJSPへ呼び出し流れ(JSP/サーブレット)

課題1

課題についての確認事項

(Tomcatプロジェクトの場合)Tomcatアプリサーバは再起動する必要は場合は以下のどれでしょうか?
①JSPファイルを修正した後
②Javaファイルを修正した後
③htmlファイルを修正した後
④XMLファイルを修正した後

④ XMLファイルは修正する度にTomcatサーバを再起動する。

(動的Webプロジェクトの場合)Tomcatアプリサーバは再起動する必要は場合は以下のどれでしょうか?
①JSPファイルを修正した後
②Javaファイルを修正した後
③htmlファイルを修正した後
④ファイルを修正した後はどの拡張子でも必ず

④ 動的Webプロジェクトの場合はファイルを修正する度にTomcatサーバを再起動する必要があります。

一覧をクリックして画面表示した後、URLバーに表示される文字列はどれでしょうか?
①~/list
②~/listMapping
③~/view/ch08/list.jsp

①~/list aタグやフォームのaction属性に設定されているURLが表示される為

ListServlet.javaでdoPost()メソッドではなくdoGet()メソッドを実行している理由は何故でしょうか?

リンク形式で画面遷移している為、GET送信の画面遷移処理を行うdoGet()メソッドを実行している

(Tomcatプロジェクトの場合)XMLファイルでは大文字小文字の違いは無視して定義することができるか?

XMLファイルでは、スペルが一文字間違っても(大文字小文字が違うだけでも)エラーとして扱われるため、違いを無視して定義できない

(動的Webプロジェクトの場合)@WebServletアノテーションと呼び出し時のURLについて、大文字小文字の違いは無視することができるか?

URLはスペルが一文字間違っても(大文字小文字が違うだけでも)エラーとして扱われるため、違いを無視することはできません

(Tomcatプロジェクトの場合)XMLファイルを修正する際にTomcatサーバは再起動する必要があるか?

XMLファイルの修正事項を反映させるためには、Tomcatサーバを再起動する必要がある

No.8:Servlet/JSPフォームデータ受け渡し(JSP/サーブレット)

課題1~5

課題についての確認事項

URLバーに表示される文言はどこを元に設定されているか

aタグやフォームのaction属性に設定されているURLがURLバーに表示される。また、GET送信の場合はパラメータ(送信しているデータの名前と値)も表示されるが、POST送信の場合は表示されない

サーブレットで文言を出力した後、forward()メソッドで画面遷移を行うと、そのサーブレットで出力された内容は画面に残るか

残らない。表示内容はdispatcher()メソッドで指定した次の画面のものに切り替わってしまう
(人間の目に留まらない速さで表示されて、すぐ画面が切り替わっているイメージ)

課題5のname=”keishiki”のデータがkadai05.jspの画面上に表示されていない理由は何故か、説明してください

typeがhiddenと設定されている隠し属性なので、画面上には表示されない

サーブレットで画面表示をする際に、setContentTypeで文字コードを指定しているのは何故か

デコード(文字コードのデータを元の文字列に変換)する際の文字コードを元々の画面で設定している文字コードに合わせないと、文字化けが発生するため、文字エンコーディングを元々の画面の文字コードに設定している

(Tomcatプロジェクトの場合)jspからjspへの画面遷移時に、XMLファイルは参照しているか

参照していません

(動的Webプロジェクトの場合)jspからjspへの画面遷移時に、@WebServletアノテーションは参照しているか

参照していません

No.9:ServletからJSPへのリスト渡し(JSP/サーブレット)

課題1

過去の受講生が描いたイメージ図(必ずしも正しいとは限りません)

課題についての確認事項

当ディスカッションと、ディスカッションNo6(JDBC リスト内オブジェクト)を比べて、どのあたりが異なるか

画面出力処理を呼び出し元のクラス内ではなく、画面遷移先のjspファイルで行っている点が異なる

ListServlet.javaファイルの、request.setAttribute(“pist”, list)にて、requestが使われています。
Requestとsessionのスコープとの違いと、cookie(クッキー)について説明してください。
このとき、それぞれの例(使う場面)を挙げて説明してください。

Sessionは、ショッピングカートのカード。
Cookieは2回目のログイン時に入力欄を自動で埋める時。ローカルPCのブラウザ内にクッキー情報は格納される。

getAttributeメソッドはどのようなメソッドか?また、なぜキャストを行っているのか?

getAttributeメソッドはリクエストスコープに登録されているデータを取得するメソッドで、引数には登録されたデータの名前を指定する。
戻り値はObject型なので、登録した時の型として扱いたい場合はキャストする必要がある。

DAOクラスにて、Person型p変数はいくつ作れてるか?

変数が1回宣言されるので、1つ

JSPファイルにて、Person型p変数はいくつ作られるか?

変数が3回宣言されるので、3つ(繰り返すたびに破棄して作り直しているので見た目は上書きしているように見える)

まとめ

JSP単元についての確認事項

MVCデザインパターンを使うメリットは何でしょうか?

修正に強い

今回のソースコードでModel、View、Controllerにあたるファイルはそれぞれどれか?

ModelはPersonクラスとPersonDAOクラス、Viewはlist.jsp、ControllerはListServletを表す

Modelの役割は何でしょうか?

JavaBeansで作成されたJavaクラスが担当し、プログラムのメイン処理やデータの保持、データベースの接続・操作をおこなう

Viewの役割は何でしょうか?

JSPが担当し、Webブラウザからの要求に対して、webページに生成し、その結果画面の表示をおこなう

Controllerの役割は何でしょうか?

サーブレットが担当し、プログラムの制御をおこない、リクエストに合わせてModelを作成・変更したり、Viewを呼び出す処理をおこなう