練習問題 解答
11.5 練習問題 解答
問1
① ×:リクエストスコープ内のデータは何度でも取得することができます。
② ×:リクエストスコープ内のデータは1リクエストの間有効なため、次のリクエストでは利用できません。
③ ○
④ ○
⑤ ×:既存のクラス以外に、自作したクラスのオブジェクトも登録することが可能です。
問2
➢ practice1101.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"); } } } String message = (String)request.getAttribute("message"); if(message == null){ message = ""; } %> <html> <head> <title>practice1101</title> </head> <body> <form action="<%= request.getContextPath() %>/Practice1101Servlet" method="get"> あなたの職業はなんですか?<br> <input type="text" name="job" value=<%= job %>> <input type="submit" value="送信"><br> <%= message %> </form> </body> </html>➢ Practice1101Servlet.java
package ch11exercise; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class Practice1101Servlet 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); request.setAttribute("job", job); request.getRequestDispatcher("/view/ch11exercise/practice1102.jsp").forward(request, response); }else{ request.setAttribute("message", message); request.getRequestDispatcher("/view/ch11exercise/practice1101.jsp").forward(request, response); } } }➢ practice1102.jsp
<%@page contentType= "text/html; charset=UTF-8" %> <% String job = (String)request.getAttribute("job"); %> <html> <head> <title>practice1102</title> </head> <body> 職業は「<%= job %>」なのですね。 </body> </html>