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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值