テキストボックスに入れた名前が別画面で表示されるだけの簡単なものです。
まず、Controller。
[UserController.java]
@Controller
public class UserController {
@RequestMapping(method = RequestMethod.GET)
public String input() {
return "user/input";
}
@RequestMapping(method = RequestMethod.POST)
public String show(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "user/show";
}
}
public class UserController {
@RequestMapping(method = RequestMethod.GET)
public String input() {
return "user/input";
}
@RequestMapping(method = RequestMethod.POST)
public String show(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "user/show";
}
}
こちらでリクエストに対する処理を行います。
RequesMappingアノテーションがついているのがリクエストに対する
処理を行うメソッドです。
RequestMethod.GETはGETリクエスト用、
RequestMethod.POSTはPOSTリクエスト用です。
つまりブラウザでhttp://localhost:8080/コンテキスト名/と
指定するとGETリクエストなので、inputメソッドが動き
views/user/input.jspが表示されます。
そのjsp内で送信ボタンを押すことでPOSTリクストが
発行されるのでshowメソッドが動きます。
RequestParamアノテーションを使うことでGETリクエスト
またはPOSTリクエスト中の値を取得できます。
ここではnameというパラメータです。
入力画面から渡されたnameパラメータを出力画面で
表示するためにModelクラスの追加します。
次に入力画面のJSPです。
[input.jsp]
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<meta charset="utf-8">
<title>postのサンプル</title>
</head>
<body>
<form method="post">
<h1>post test</h1>
name: <input type="text" name="name">
<input type="submit"/>
</form>
</body>
</html>
<html>
<head>
<meta charset="utf-8">
<title>postのサンプル</title>
</head>
<body>
<form method="post">
<h1>post test</h1>
name: <input type="text" name="name">
<input type="submit"/>
</form>
</body>
</html>
STS内部のブラウザで表示すると、こんな簡単な画面です。
出力画面のJSP
[show.jsp]
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<title>Echo Application</title>
</head>
<body>
Hello <c:out value="${name}" />!
</body>
</html>
<%@ page pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<title>Echo Application</title>
</head>
<body>
Hello <c:out value="${name}" />!
</body>
</html>
JSTLを使ってエスケープしてます。
で、実行結果
Strutsとの差異としては設定ファイルに記述が不要な事や
今回のように入力値が少なければActionFormのようなものが
いらない事でしょうか。
GET, POSTも動作メソッドを分けられます。
新しいフレームワークほど、シンプルで覚える事が少ないですが
情報量が少ないのでSpringはちょうど良い位置かもしれません。
SpringMVCを満足できるまでいじったら、より新しいJAX-RSを
触ろうと思ってます。