練習問題 解答

8.8 練習問題 解答

問1

① ○ ② ×:データをURLの後ろに付けて送信するため、送信できるデータ量に制限があるのはGET送信です。
③ ×:POST送信はフォームからしか送ることができません。
④ ○
⑤ ×:出力用文字エンコーディングと送信データ用文字エンコーディングは別々に設定する必要があります。

問2

① post
② job
③ doPost
④ setCharacterEncoding
⑤ getParameter

問3

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

<html>
	<head>
		<title>practice0802</title>
	</head>
	<body>
		<form action="<%= request.getContextPath() %>/Practice0802Servlet" method="post">
			あなたの職業はなんですか?<br>
			<input type="text" name="job">
			<input type="submit" value="送信">
		</form>
	</body>
</html>

➢ Practice0802Servlet.java
package ch08exercise;

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class Practice0802Servlet extends HttpServlet {

 	public void doGet(HttpServletRequest request, HttpServletResponse response)
 	throws ServletException, IOException {
 
 		commonProcess(request, response);
 	}
 
 	public void doPost(HttpServletRequest request, HttpServletResponse response)
 	throws ServletException, IOException {
 
 		commonProcess(request, response);
 	}
 
 	private void commonProcess(HttpServletRequest request, HttpServletResponse response)
 	throws ServletException, IOException {
 
 		request.setCharacterEncoding("UTF-8");
 		String job = request.getParameter("job");
 		String message = null;
 
 		if(job == null){
 			message = "フォーム画面から入力してください";
 		}else if(job.equals("")){
 			message = "何も入力されていません";
 		}
 
 		response.setContentType("text/html; charset=UTF-8");
 		PrintWriter out = response.getWriter();
 
 		if(message == null){
 			out.println("職業は" + job + "なのですね");
 		}else{
 			out.println(message);
 		}
 	}
 }
➢ web.xml
<servlet>
	<servlet-name>Practice0802ServletMapping</servlet-name>
	<servlet-class>ch08exercise.Practice0802Servlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>Practice0802ServletMapping</servlet-name>
	<url-pattern>/Practice0802Servlet</url-pattern>
</servlet-mapping>

NEXT>> 第9章 サーブレットからJSPへ画面遷移