練習問題

9.4 練習問題

 本章で習った内容をもとに練習問題を解いてください。

問1 次の設問①~⑤について○か×で答えなさい。

設問
① ディスパッチはフォワードとインクルードの2種類のみ存在する。
② フォワードでは転送先で全ての出力を行うため、転送元では出力は行うことができない。
③ フォワードを使う場合、必ず画面出力を行うプログラムに転送しなくてはならない。
④ 1つのプログラム内でフォワードを複数回行うことはできない。
⑤ インクルードを行うと複数のファイルから1つの画面を作ることができる。

問2 以下に示す実行結果になるような、ソースコードの空欄①~④に入るものを答えなさい。

実行結果

ソースコード

① 親フォルダの入力または選択 :web_basic/view/ch09exercise
② ファイル名 :practice0901.jsp
③ アクセスURL :http://localhost:8080/web_basic/view/ch09exercise/practice0901.jsp

➢ 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>

① ソース・フォルダ :web_basic/WEB-INF/src
② パッケージ :ch09exercise
③ 名前 :Practice0901Servlet
④ スーパークラス :javax.servlet.http.HttpServlet
⑤ アクセスURL :practice0901.jspからの画面遷移でアクセスされる

➢ Practice0901Servlet.java
➢ 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>

① 親フォルダの入力または選択 :web_basic/view/ch09exercise
② ファイル名 :practice0902.jsp
③ アクセスURL :Practice0901Servlet.javaからの画面遷移でアクセスされる

➢ practice0902.jsp

問3 問2で作成したプログラムをもとに、画面遷移図と仕様に沿ったプログラムを作成しなさい。

画面遷移

practice0903.jspの仕様
 ①提供されたソースコードを利用する。

Practice0902Servlet.javaの仕様
 ①Practice0901Servlet.javaをコピーし仕様に沿った内容に修正する。
 ②入力パラメータが空文字の場合、「何も入力されていません。」という文字列をpractice0904.jspにフォワードする。
 ③ダイレクトアクセスされた場合、「フォーム画面から入力してください。」という文字列をpractice0904.jspにフォワードする。
 ④正常なアクセスで入力パラメータに問題がない場合、入力パラメータをpractice0902.jspにフォワードする。
 ⑤web.xmlには提供されたソースを追記する

practice0904.jspの仕様
 ①提供されたソースコードを利用する。

ソースコード

① 親フォルダの入力または選択 :web_basic/view/ch09exercise
② ファイル名 :practice0903.jsp
③ アクセスURL :http://localhost:8080/web_basic/view/ch09exercise/practice0903.jsp

➢ 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_basic/WEB-INF/src
② パッケージ :ch09exercise
③ 名前 :Practice0902Servlet
④ スーパークラス :javax.servlet.http.HttpServlet
⑤ アクセスURL :practice0903.jspからの画面遷移でアクセスされる

➢ web.xml
<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>

① 親フォルダの入力または選択 :web_basic/view/ch09exercise
② ファイル名 :practice0904.jsp
③ アクセスURL :practice0903.jspからの画面遷移でアクセスされる

➢ practice0904.jsp
<%@page contentType= "text/html; charset=UTF-8" %>

<%
String message = request.getParameter("message");
%>

<html>
	<head>
		<title>practice0904</title>
	</head>
	<body>
		<%= message %>
	</body>
</html>

NEXT>> 9.5 練習問題 解答