SpringMVC転送データ

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;
}

おすすめ

転載: blog.csdn.net/qq_37669050/article/details/101711371