SpringMVC reenvío de datos

1. [No recomendado] Encapsule los datos que se reenviarán en HttpServletRequest

Puede agregar parámetros de tipo HttpServletRequest a la lista de parámetros del método de procesamiento de solicitudes. Cuando sea necesario reenviar datos, llame al método setAttribute (nombre de cadena, valor de objeto) del objeto de parámetro para encapsular y luego reenvíelo:

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

Luego, en la página de plantilla de Thymeleaf, use la expresión para leer los datos encapsulados arriba:

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

2. [Recomendado] Encapsule los datos que se reenviarán en ModelMap

¡El método de uso es básicamente el mismo que usar HttpServletRequest! Debe agregar un parámetro de tipo ModelMap a la lista de parámetros del método de procesamiento de la solicitud. Cuando sea necesario reenviar datos, llame a addAttribute (nombre de cadena, valor de objeto) del objeto de parámetro para encapsular los datos que deben reenviarse:

@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 se hereda de LinkedHashMap, y el método addAttribute () se implementa esencialmente llamando al método put () de Map.

3. [No recomendado] Utilice ModelAndView como valor de retorno del método de procesamiento de solicitudes

Declare el valor de retorno del método de procesamiento de solicitudes como el tipo ModelAndView. Cuando necesite devolver el resultado, llame al método de construcción ModelAndView (String viewName, Map <String,?> Model) para determinar el nombre y los datos de la vista:

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

Supongo que te gusta

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