転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

【Java】打率を計算できるWebサービスをサーブレットで作ってみた

最近、サーブレットを勉強していたので、その勉強内容を基にアウトプットをしていこうと思う。ちなみに勉強した内容は、以下の通り。
uuc1h.hatenablog.jp
作ったものは、非常に単純で、HTMLのフォームで打数と安打数を入力すれば、サーブレットで打率を計算するというもの。
f:id:uuc1h:20190217163120p:plain
安打数と打数を入力し、計算ボタンをクリックすると
f:id:uuc1h:20190217163132p:plain
打率が表示される。
非常に単純やけど、実際に頭に思い描いた通りに動いてくれると楽しい。
コードも載せておきます。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>打率の計算</title>
</head>
<body>

<form action="bamanager" method="post">

	<p>安打数を入力してください</p>
	<input type="text" name="hits">

	<p>打数を入力してください</p>
	<input type="text" name="bats">

	<input type="submit" value="計算">

</form>

</body>
</html>
@WebServlet(urlPatterns={"/chapter0217/bamanager"})
public class BaManager extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		// レスポンスの文字エンコーディングの指定
		resp.setContentType("text/html; charset=UTF-8");

		// PrintWriterオブジェクトの取得
		PrintWriter pw = resp.getWriter();

		// リクエストパラメータの文字エンコーディングの指定
		req.setCharacterEncoding("UTF-8");

		try {

			// リクエストパラメータの取得
			float hits = Float.parseFloat(req.getParameter("hits"));
			float bats = Float.parseFloat(req.getParameter("bats"));

			// 打率の計算
			float ba = hits / bats;

			Page.header(pw);

			// 安打数
			pw.println("<p>安打数<BR>");
			pw.println(hits + "</p>");

			// 打数
			pw.println("<p>打数<BR>");
			pw.println(bats + "</p>");

			// 打率
			pw.println("<p>打率<BR>");
			pw.println(String.format("%.3f", ba) + "</p>");

			Page.footer(pw);

		} catch (NumberFormatException e) {
			pw.println(e);
		}



	}

}