練習問題
9.4 練習問題
本章で習った内容をもとに練習問題を解いてください。
問1 次の設問①~⑤について○か×で答えなさい。
設問
① ディスパッチはフォワードとインクルードの2種類のみ存在する。
② フォワードでは転送先で全ての出力を行うため、転送元では出力は行うことができない。
③ フォワードを使う場合、必ず画面出力を行うプログラムに転送しなくてはならない。
④ 1つのプログラム内でフォワードを複数回行うことはできない。
⑤ インクルードを行うと複数のファイルから1つの画面を作ることができる。
問2 以下に示す実行結果になるような、ソースコードの空欄①~④に入るものを答えなさい。
実行結果
ソースコード
➢ practice0901.jsp① 親フォルダの入力または選択 :web_basic/view/ch09exercise
② ファイル名 :practice0901.jsp
③ アクセスURL :http://localhost:8080/web_basic/view/ch09exercise/practice0901.jsp
<%@page contentType= "text/html; charset=UTF-8" %> <html> <head> <title>practice0901</title> </head> <body> <form action="<%= request.getContextPath() %>/Practice0901Servlet" method="get"> あなたの職業はなんですか?<br> <input type="text" name="job"> <input type="submit" value="送信"> </form> </body> </html>
➢ Practice0901Servlet.java① ソース・フォルダ :web_basic/WEB-INF/src
② パッケージ :ch09exercise
③ 名前 :Practice0901Servlet
④ スーパークラス :javax.servlet.http.HttpServlet
⑤ アクセスURL :practice0901.jspからの画面遷移でアクセスされる
➢ web.xml
<servlet> <servlet-name>Practice0901ServletMapping</servlet-name> <servlet-class>ch09exercise.Practice0901Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Practice0901ServletMapping</servlet-name> <url-pattern>/Practice0901Servlet</url-pattern> </servlet-mapping>
➢ practice0902.jsp① 親フォルダの入力または選択 :web_basic/view/ch09exercise
② ファイル名 :practice0902.jsp
③ アクセスURL :Practice0901Servlet.javaからの画面遷移でアクセスされる
問3 問2で作成したプログラムをもとに、画面遷移図と仕様に沿ったプログラムを作成しなさい。
画面遷移
practice0903.jspの仕様
①提供されたソースコードを利用する。
Practice0902Servlet.javaの仕様
①Practice0901Servlet.javaをコピーし仕様に沿った内容に修正する。
②入力パラメータが空文字の場合、「何も入力されていません。」という文字列をpractice0904.jspにフォワードする。
③ダイレクトアクセスされた場合、「フォーム画面から入力してください。」という文字列をpractice0904.jspにフォワードする。
④正常なアクセスで入力パラメータに問題がない場合、入力パラメータをpractice0902.jspにフォワードする。
⑤web.xmlには提供されたソースを追記する
practice0904.jspの仕様
①提供されたソースコードを利用する。
ソースコード
➢ practice0903.jsp① 親フォルダの入力または選択 :web_basic/view/ch09exercise
② ファイル名 :practice0903.jsp
③ アクセスURL :http://localhost:8080/web_basic/view/ch09exercise/practice0903.jsp
<%@page contentType= "text/html; charset=UTF-8" %> <html> <head> <title>practice0903</title> </head> <body> <form action="<%= request.getContextPath() %>/Practice0902Servlet" method="get"> あなたの職業はなんですか?<br> <input type="text" name="job"> <input type="submit" value="送信"> </form> </body> </html>
➢ web.xml① ソース・フォルダ :web_basic/WEB-INF/src
② パッケージ :ch09exercise
③ 名前 :Practice0902Servlet
④ スーパークラス :javax.servlet.http.HttpServlet
⑤ アクセスURL :practice0903.jspからの画面遷移でアクセスされる
<servlet> <servlet-name>Practice0902ServletMapping</servlet-name> <servlet-class>ch09exercise.Practice0902Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Practice0902ServletMapping</servlet-name> <url-pattern>/Practice0902Servlet</url-pattern> </servlet-mapping>
➢ practice0904.jsp① 親フォルダの入力または選択 :web_basic/view/ch09exercise
② ファイル名 :practice0904.jsp
③ アクセスURL :practice0903.jspからの画面遷移でアクセスされる
<%@page contentType= "text/html; charset=UTF-8" %> <% String message = request.getParameter("message"); %> <html> <head> <title>practice0904</title> </head> <body> <%= message %> </body> </html>