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