練習問題 解答
12.5 練習問題 解答
問1
① ○
② ○
③ ×:スコープから登録されていない名前のデータを取得すると、null値が返されます。
④ ×:セッションは任意に破棄することができます。
⑤ ×:ブラウザが閉じられたかどうかを正確に判断できないため、セッションタイムアウトによって削除されます。
問2
➢ practice1201.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"); } } }else{ job = (String)session.getAttribute("job"); if(job == null){ job = ""; } } String message = (String)request.getAttribute("message"); if(message == null){ message = ""; } %> <html> <head> <title>practice1101</title> </head> <body> <form action="<%= request.getContextPath() %>/Practice1201Servlet" method="get"> あなたの職業はなんですか?<br> <input type="text" name="job" value=<%= job %>> <input type="submit" value="送信"><br> <%= message %> </form> </body> </html>➢ Practice1201Servlet.java
package ch12exercise; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; public class Practice1201Servlet 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); HttpSession session = request.getSession(); session.setAttribute("job", job); request.getRequestDispatcher("/view/ch12exercise/practice1202.jsp").forward(request, response); }else{ request.setAttribute("message", message); request.getRequestDispatcher("/view/ch12exercise/practice1201.jsp").forward(request, response); } } }➢ practice1202.jsp
<%@page contentType= "text/html; charset=UTF-8" %> <% String job = (String)session.getAttribute("job"); %> <html> <head> <title>practice1202</title> </head> <body> 職業は「<%= job %>」なのですね。<br> <form action="<%= request.getContextPath() %>/view/ch12exercise/practice1201.jsp" method="get"> <input type="submit" value="戻る"> </form> </body> </html>