練習問題 解答

8.8 練習問題 解答

問1

① ○ ② ×:データをURLの後ろに付けて送信するため、送信できるデータ量に制限があるのはGET送信です。
③ ×:POST送信はフォームからしか送ることができません。
④ ○
⑤ ×:出力用文字エンコーディングと送信データ用文字エンコーディングは別々に設定する必要があります。

問2

① post
② job
③ doPost
④ setCharacterEncoding
⑤ getParameter

問3

➢ practice0802.jsp
1<%@page contentType= "text/html; charset=UTF-8" %>
2 
3<html>
4    <head>
5        <title>practice0802</title>
6    </head>
7    <body>
8        <form action="<%= request.getContextPath() %>/Practice0802Servlet" method="post">
9            あなたの職業はなんですか?<br>
10            <input type="text" name="job">
11            <input type="submit" value="送信">
12        </form>
13    </body>
14</html>
➢ Practice0802Servlet.java
1package ch08exercise;
2 
3import java.io.*;
4 
5import javax.servlet.*;
6import javax.servlet.http.*;
7 
8public class Practice0802Servlet extends HttpServlet {
9 
10    public void doGet(HttpServletRequest request, HttpServletResponse response)
11    throws ServletException, IOException {
12  
13        commonProcess(request, response);
14    }
15  
16    public void doPost(HttpServletRequest request, HttpServletResponse response)
17    throws ServletException, IOException {
18  
19        commonProcess(request, response);
20    }
21  
22    private void commonProcess(HttpServletRequest request, HttpServletResponse response)
23    throws ServletException, IOException {
24  
25        request.setCharacterEncoding("UTF-8");
26        String job = request.getParameter("job");
27        String message = null;
28  
29        if(job == null){
30            message = "フォーム画面から入力してください";
31        }else if(job.equals("")){
32            message = "何も入力されていません";
33        }
34  
35        response.setContentType("text/html; charset=UTF-8");
36        PrintWriter out = response.getWriter();
37  
38        if(message == null){
39            out.println("職業は" + job + "なのですね");
40        }else{
41            out.println(message);
42        }
43    }
44 }
➢ web.xml
1<servlet>
2    <servlet-name>Practice0802ServletMapping</servlet-name>
3    <servlet-class>ch08exercise.Practice0802Servlet</servlet-class>
4</servlet>
5<servlet-mapping>
6    <servlet-name>Practice0802ServletMapping</servlet-name>
7    <url-pattern>/Practice0802Servlet</url-pattern>
8</servlet-mapping>

NEXT>> 第9章 サーブレットからJSPへ画面遷移

f