解答例 - 実習課題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);
}
}
}

