練習問題 解答

10.5 練習問題 解答

問1

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

問2

➢ practice1001.jsp
1<%@page contentType= "text/html; charset=UTF-8" %>
2<%@page import="java.net.*" %>
3<%
4String job = "";
5 
6Cookie[] jobCookie = request.getCookies();
7if(jobCookie != null){
8    for(int i = 0 ; i < jobCookie.length; i++){
9        if(jobCookie[i].getName().equals("job")){
10            job = URLDecoder.decode(jobCookie[i].getValue(), "UTF-8");
11        }
12    }
13}
14%>
15<html>
16    <head>
17        <title>practice1001</title>
18    </head>
19    <body>
20        <form action="<%= request.getContextPath() %>/Practice1001Servlet" method="get">
21            あなたの職業はなんですか?<br>
22            <input type="text" name="job" value=<%= job %>>
23            <input type="submit" value="送信">
24        </form>
25    </body>
26</html>
➢ Practice1001Servlet.java
1package ch10exercise;
2 
3import java.io.IOException;
4 
5import jakarta.servlet.RequestDispatcher;
6import jakarta.servlet.ServletException;
7import jakarta.servlet.annotation.WebServlet;
8import jakarta.servlet.http.Cookie;
9import jakarta.servlet.http.HttpServlet;
10import jakarta.servlet.http.HttpServletRequest;
11import jakarta.servlet.http.HttpServletResponse;
12 
13@WebServlet("/Practice1001Servlet")
14public class Practice1001Servlet extends HttpServlet {
15    public void doGet(HttpServletRequest request, HttpServletResponse response)
16            throws ServletException, IOException {
17     
18        String job = request.getParameter("job");
19        String message = null;
20  
21        if(job == null){
22            message = "フォーム画面から入力してください。";
23        }else if(job.equals("")){
24            message = "何も入力されていません。";
25        }
26  
27        if(message == null){
28            Cookie jobCookie = new Cookie("job", value);
29            jobCookie.setMaxAge(60 * 60 * 12);
30            response.addCookie(jobCookie);
31  
32            RequestDispatcher dispatcher = request.getRequestDispatcher("/view/ch10exercise/practice1002.jsp");
33            dispatcher.forward(request, response);
34        }else{
35            RequestDispatcher dispatcher =request
36                        .getRequestDispatcher("/view/ch10exercise/practice1003.jsp?message="+message);
37            dispatcher.forward(request, response);
38        }
39     
40    }
41 }

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

f