5月24日

うらないもどきの続きを作る。

今は名前だけをJSPで表示しているので、誕生日も表示するように修正する。
まずはサーブレット側から誕生日のデータを渡すようにする。

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		String name = request.getParameter("name");
		String month = request.getParameter("month");
		String date = request.getParameter("date");
		request.setAttribute("name", name);
		request.setAttribute("month", month);
		request.setAttribute("date", date);
		request.getRequestDispatcher("result.jsp")
			   .forward(request, response);
	}

JSP側で誕生日を表示する。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>うらないもどき 結果</title>
</head>
<body>
<h1>結果</h1>
${month}月${date}日生まれの${name}さんの運勢は?
</body>
</html>

サーブレット側で結果を渡すコードを追加するとともに、うらないの結果を生成するメソッドを用意する。

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		String name = request.getParameter("name");
		String month = request.getParameter("month");
		String date = request.getParameter("date");
		String result = getResult(month, date);
		request.setAttribute("name", name);
		request.setAttribute("month", month);
		request.setAttribute("date", date);
		request.setAttribute("result", result);
		request.getRequestDispatcher("result.jsp")
			   .forward(request, response);
	}

	private String getResult(String month, String date) {
		return "サイコーです!";
	}

JSP側で結果を表示する。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>うらないもどき 結果</title>
</head>
<body>
<h1>結果</h1>
${month}月${date}日生まれの${name}さんの運勢は?
<div>${result}</div>
</body>
</html>

誕生日によって異なる結果が表示されるようにする。

	private String getResult(String month, String date) {
		String[] r = {
				"ぼちぼちです",
				"サイコーです!",
				"まあまあです",
				"それなりです",
				"やれやれです",
				"なかなかです",
				"かなりいい感じです",
				"最悪です"
		};
		String s = month + "-" + date;
		int i = s.hashCode() % r.length;
		return r[i];
	}

なんとか度診断も追加してみる。
入力フォームに追加する。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>うらないもどき</title>
</head>
<body>

<h1>うらないもどき</h1>

<form action="DivineServlet">
<div>
名前:<input type="text" name="name">
</div>
<div>
誕生日:
<select name="month">
<c:forEach begin="1" end="12" varStatus="status">
  <option value="${status.index}">${status.index}</option>
</c:forEach>
</select>
月
<select name="date">
<c:forEach begin="1" end="31" varStatus="status">
  <option value="${status.index}">${status.index}</option>
</c:forEach>
</select>
日
</div>
<div>
なんとか度:<input type="text" name="rate">
</div>
<div>
<input type="submit" value="送信">
</div>
</form>


</body>
</html>

サーブレットにコードを追加する。

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		String name = request.getParameter("name");
		String month = request.getParameter("month");
		String date = request.getParameter("date");
		String rate = request.getParameter("rate");
		String result = getResult(month, date);
		String rating = getRating(name, rate);
		request.setAttribute("name", name);
		request.setAttribute("month", month);
		request.setAttribute("date", date);
		request.setAttribute("result", result);
		request.setAttribute("rate", rating);
		request.getRequestDispatcher("result.jsp")
			   .forward(request, response);
	}

	private String getRating(String name, String rate) {
		String s = name + "-" + rate;
		int v = s.hashCode() % 100;
		String rating = name + "さんの"
					  + rate + "度は、"
					  + v + "%です。";
		return rating;
	}

結果を表示する。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>うらないもどき 結果</title>
</head>
<body>
<h1>結果</h1>
${month}月${date}日生まれの${name}さんの運勢は?
<div>${result}</div>
<div>${rate}</div>
</body>
</html>

Spring MVC の準備として、プラグインをインストールする。

メニューの[ヘルプ]-[Eclipseマーケットプレイス]を選択する。
検索キーワードで「STS」を入力して検索を実行。
検索結果に出た「STS 3.7.3 RELEASE」をインストールする。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です