練習問題 解答
8.8 練習問題 解答
問1
① ○
② ×:データをURLの後ろに付けて送信するため、送信できるデータ量に制限があるのはGET送信です。
③ ×:POST送信はフォームからしか送ることができません。
④ ○
⑤ ×:出力用文字エンコーディングと送信データ用文字エンコーディングは別々に設定する必要があります。
問2
① post
② job
③ doPost
④ setCharacterEncoding
⑤ getParameter
問3
➢ practice0802.jsp<%@page contentType= "text/html; charset=UTF-8" %> <html> <head> <title>practice0802</title> </head> <body> <form action="<%= request.getContextPath() %>/Practice0802Servlet" method="post"> あなたの職業はなんですか?<br> <input type="text" name="job"> <input type="submit" value="送信"> </form> </body> </html>➢ Practice0802Servlet.java
package ch08exercise; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Practice0802Servlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { commonProcess(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { commonProcess(request, response); } private void commonProcess(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 = "何も入力されていません"; } response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); if(message == null){ out.println("職業は" + job + "なのですね"); }else{ out.println(message); } } }➢ web.xml
<servlet> <servlet-name>Practice0802ServletMapping</servlet-name> <servlet-class>ch08exercise.Practice0802Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Practice0802ServletMapping</servlet-name> <url-pattern>/Practice0802Servlet</url-pattern> </servlet-mapping>