練習問題 解答

10.5 練習問題 解答

問1

① ×:クッキーはWebサーバ上ではなくクライアント上にデータが保管されます。
② ○
③ ○
④ ×:有効期限を設定しない場合、ブラウザが閉じられるまで有効なデータとなる。
⑤ ○

問2

➢ practice1001.jsp
<%@page contentType= "text/html; charset=UTF-8" %>
<%@page import="java.net.*" %>
<%
String job = "";

Cookie[] jobCookie = request.getCookies();
if(jobCookie != null){
	for(int i = 0 ; i < jobCookie.length; i++){
		if(jobCookie[i].getName().equals("job")){
			job = URLDecoder.decode(jobCookie[i].getValue(), "UTF-8");
		}
	}
}
%>
<html>
	<head>
		<title>practice1001</title>
	</head>
	<body>
		<form action="<%= request.getContextPath() %>/Practice1001Servlet" method="get">
			あなたの職業はなんですか?<br>
			<input type="text" name="job" value=<%= job %>>
			<input type="submit" value="送信">
		</form>
	</body>
</html>
➢ Practice1001Servlet.java
package ch10exercise;

import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Practice1001Servlet extends HttpServlet {

 	public void doGet(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 = "何も入力されていません。";
 		}
 
 		if(message == null){
 			String value = URLEncoder.encode(job, "UTF-8");
 			Cookie jobCookie = new Cookie("job", value);
 			jobCookie.setMaxAge(60 * 60 * 12);
 			response.addCookie(jobCookie);
 
 			RequestDispatcher dispatcher =
 				request.getRequestDispatcher("/view/ch10exercise/practice1002.jsp?job="+job);
 			dispatcher.forward(request, response);
 		}else{
 			RequestDispatcher dispatcher =
 				request.getRequestDispatcher("/view/ch10exercise/practice1003.jsp?message="+message);
 			dispatcher.forward(request, response);
 		}
 	}
 }

NEXT>> 第11章 リクエストスコープを利用しよう