【Java】生年月日から年齢を計算するプログラム その2
前回はLocalDateクラスを使用し計算しましたが
今回はCalendarクラスを使用して生年月日から年齢を計算するプログラムを作成したいと思います。
処理内容は大きくは変わりません。
生年月日から年齢を計算する
前回と同じ流れです
入力jsp → サーブレットクラス → 出力jsp
CalcServlet.java
サーブレットクラスです
package servlet; import java.io.IOException; import java.util.Calender; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/CalcServlet") public class CalcServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { exec(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { exec(request, response); } private void exec(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String year = request.getParameter("year"); String month = request.getParameter("month"); String day = request.getParameter("day"); Hold hold = new Hold(); String age = getAge(year, month, day); hold.setAge(age); request.setAttribute("hold", hold); RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Result.jsp"); dispatcher.forward(request, response); } private String getAge(String year, String month, String day) { //ここから違います String inputForm = user.getYear() + "/" + user.getMonth() + "/" + user.getDay(); Calendar calendar = Calendar.getInstance(); calendar.set(Integer.parseInt(user.getYear()), (Integer.parseInt(user.getMonth()) - 1), Integer.parseInt(user.getDay())); String calendarForm = calendar.get(Calendar.YEAR) + "/" + (calendar.get(Calendar.MONTH) + 1) + "/" + calendar.get(Calendar.DAY_OF_MONTH); return inputForm.equals(calendarForm); //ここまで } }
入力された生年月日とCalendarクラスに入れて取り出した値が同じならreturnするようにしています。
Hold.java
ageを保持するクラス
package servlet; public class Hold { private String age; public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
あとは入力するjspファイルと結果を表示るjspファイル(今回はResult.jsp)を作成すれば完成です。
入力jsp(サンプル)
出力先jsp(今回はResult.jsp)
生年月日を入力すると年齢を表示することができました。