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