解答例 - 実習課題3 - 5.includeとforward
(実習課題3)
以下の条件を満たすサーブレットアプリケーションを作成しなさい。
- 動物を表すクラスを作成し、そのクラスは「名前」「身長」「体重」を表すインスタンス変数、および適当な「set」「get」メソッドを持つものとする。
- サーブレットアプリケーションは入力ページと出力ページを持ち、入力ページで上記3要素を入力する。出力ページでは、3要素の表示を行う。
- 3要素全てが入力されていない場合には、出力ページを表示せずに、再度入力ページで入力を促すようにする事。
- 出力ページに表示をする前に、入力された要素をログファイルに書き出すようにする事。
- 「入力ページ」「出力ページ」「処理を行うサーブレット」の3つのサーブレットを作成する事。
解答例
/* * Animal.java TECHSCORE Java Servlet5章 実習課題3 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.servlet.chapter5.exercise3; public class Animal { private String name = ""; private int height = 0; private int weight = 0; public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public boolean isValid() { if (!name.equals("") && !(weight == 0) && !(height == 0)) { return true; } return false; } }
/* * InputServlet.java TECHSCORE Java Servlet5章 実習課題3 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.servlet.chapter5.exercise3; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class InputServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer buffer = new StringBuffer(); buffer.append("<html><head> <title>Servlet5章Exercise3"); buffer.append("</title></head><body>"); buffer.append("<form action=\"\">"); buffer.append("名前<input type=\"text\" name=\"name\"><br>"); buffer.append("身長<input type=\"text\" name=\"height\"><br>"); buffer.append("体重<input type=\"text\" name=\"weight\"><br>"); buffer.append("<input type=\"submit\" value=\"送信\" method=\"get\">"); buffer.append("</form>"); buffer.append("</body></html>"); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter writer = response.getWriter(); writer.println(buffer.toString()); } }
/* * OutputServlet.java TECHSCORE Java Servlet5章 実習課題3 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.servlet.chapter5.exercise3; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class OutputServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Animal animal = (Animal) request.getAttribute("animal"); StringBuffer buffer = new StringBuffer(); buffer.append("<html><head> <title>Servlet5章Exercise3"); buffer.append("</title></head><body>"); buffer.append("名前:").append(animal.getName()).append("<br>"); buffer.append("身長:").append(animal.getHeight()).append("<br>"); buffer.append("体重:").append(animal.getWeight()).append("<br>"); buffer.append("</body></html>"); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter writer = response.getWriter(); writer.println(buffer.toString()); } }
/* * ProsessServlet.java TECHSCORE Java Servlet5章 実習課題3 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.servlet.chapter5.exercise3; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ProcessServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); String height = request.getParameter("height"); String weight = request.getParameter("weight"); Animal animal = new Animal(); animal.setName(name); try { animal.setHeight(Integer.parseInt(height)); animal.setWeight(Integer.parseInt(weight)); } catch (NumberFormatException e) { this.getServletContext().getNamedDispatcher("servlet5-3input") .include(request, response); } if (animal.isValid()) { request.setAttribute("animal", animal); this.getServletContext().getNamedDispatcher("servlet5-3output") .include(request, response); } else { this.getServletContext().getNamedDispatcher("servlet5-3input") .include(request, response); } } }