練習問題 解答
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); } } }