1. [非推奨]転送するデータをHttpServletRequestにカプセル化します
リクエスト処理メソッドのパラメータリストにHttpServletRequestタイプのパラメータを追加できます。データを転送する必要がある場合は、パラメータオブジェクトsetAttribute(String name、Object value)メソッドを呼び出してカプセル化し、転送します。
@RequestMapping("handle_login.do")
public String handleLogin(String username, String password,
HttpServletRequest request) {
System.out.println("UserController.handleLogin()");
System.out.println("username=" + username);
System.out.println("password=" + password);
// 判断用户名
if ("root".equals(username)) {
// 用户名正确,需要判断密码
if ("1234".equals(password)) {
// 密码也正确,则登录成功
// TODO 处理登录成功
} else {
// 密码错误
request.setAttribute("errorMessage", "密码错误");
return "error";
}
} else {
// 用户名错误
request.setAttribute("errorMessage", "用户名不存在");
return "error";
}
return null;
}
次に、Thymeleafのテンプレートページで、式を使用して上記でカプセル化されたデータを読み取ります。
<h3 th:text="${errorMessage}">xxxxxxx</h3>
2. [推奨]転送するデータをModelMapにカプセル化します
使用方法は基本的にHttpServletRequestを使用するのと同じです!リクエストの処理方法のパラメータリストにModelMapタイプのパラメータを追加する必要があります。データを転送する必要がある場合は、パラメータオブジェクトのaddAttribute(String name、Object value)を呼び出して、転送するデータをカプセル化します。
@RequestMapping("handle_login.do")
public String handleLogin(String username, String password,
ModelMap modelMap) {
System.out.println("UserController.handleLogin()");
System.out.println("username=" + username);
System.out.println("password=" + password);
// 判断用户名
if ("root".equals(username)) {
// 用户名正确,需要判断密码
if ("1234".equals(password)) {
// 密码也正确,则登录成功
// TODO 处理登录成功
} else {
// 密码错误
// request.setAttribute("errorMessage", "密码错误");
modelMap.addAttribute("errorMessage", "[M] 密码错误");
return "error";
}
} else {
// 用户名错误
// request.setAttribute("errorMessage", "用户名不存在");
modelMap.addAttribute("errorMessage", "[M] 用户名不存在");
return "error";
}
return null;
}
ModelMapはLinkedHashMapから継承されます。addAttribute()メソッドは、基本的にMapのput()メソッドを呼び出すことによって実装されます。
3. [非推奨]リクエスト処理メソッドの戻り値としてModelAndViewを使用します
リクエスト処理メソッドの戻り値をModelAndViewタイプとして宣言します。結果を返す必要がある場合は、ModelAndView(String viewName、Map <String、?> model)構築メソッドを呼び出して、ビュー名とデータを決定します。
@RequestMapping("handle_login.do")
public ModelAndView handleLogin(String username, String password) {
System.out.println("UserController.handleLogin()");
System.out.println("username=" + username);
System.out.println("password=" + password);
Map<String, Object> map = new HashMap<String, Object>();
// 判断用户名
if ("root".equals(username)) {
// 用户名正确,需要判断密码
if ("1234".equals(password)) {
// 密码也正确,则登录成功
// TODO 处理登录成功
} else {
// 密码错误
// request.setAttribute("errorMessage", "密码错误");
// modelMap.addAttribute("errorMessage", "[M] 密码错误");
map.put("errorMessage", "[MAV] 密码错误");
return new ModelAndView("error", map);
}
} else {
// 用户名错误
// request.setAttribute("errorMessage", "用户名不存在");
// modelMap.addAttribute("errorMessage", "[M] 用户名不存在");
map.put("errorMessage", "[MAV] 用户名不存在");
return new ModelAndView("error", map);
}
return null;
}