Dados de encaminhamento SpringMVC

1. [Não recomendado] Encapsular os dados a serem encaminhados em HttpServletRequest

Você pode adicionar parâmetros do tipo HttpServletRequest à lista de parâmetros do método de processamento de solicitação. Quando os dados precisam ser encaminhados, chame o método setAttribute (String name, Object value) do objeto de parâmetro para encapsular e, em seguida, encaminhe-o:

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

Então, na página de modelo do Thymeleaf, use a expressão para ler os dados encapsulados acima:

<h3 th:text="${errorMessage}">xxxxxxx</h3>

2. [Recomendado] Encapsular os dados a serem encaminhados no ModelMap

O método de uso é basicamente o mesmo que usar HttpServletRequest! É necessário adicionar um parâmetro de tipo ModelMap à lista de parâmetros do método de processamento da solicitação. Quando os dados precisam ser encaminhados, o addAttribute (nome da string, valor do objeto) do objeto de parâmetro é chamado para encapsular os dados a serem encaminhados:

@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 é herdado de LinkedHashMap. O método addAttribute () é essencialmente implementado chamando o método put () de Map.

3. [Não recomendado] Use ModelAndView como o valor de retorno do método de processamento de solicitação

Declare o valor de retorno do método de processamento da solicitação como o tipo ModelAndView. Quando você precisar retornar o resultado, chame o método de construção ModelAndView (String viewName, Map <String,?> Model) para determinar o nome da visualização e os dados:

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

Acho que você gosta

Origin blog.csdn.net/qq_37669050/article/details/101711371
Recomendado
Clasificación