您的位置:首页 > 编程语言 > Java开发

springmvc传值方法

2014-10-28 17:06 387 查看
上面学习了如何通过url地址栏传参数给controller,那么接下来,学习下controller如何将传递给view。1、在WelcomController类中的创建如下方法:@RequestMapping(value={"/","/welcom"})
public String welcome(@RequestParam("username") String username,Map<String ,String> context){
context.put("username", username);
System.out.println("接收传入的参数 username: "+username);
return "welcome";
}此时项目目录如图:


2、在jsp页面输入如下代码:



3、在地址栏中输入请求路径及参数,得到结果,如下图所示:



从操作实例上不难看出,直接使用map就可以传值。但是在spring的官网上,明确给出不建议使用map传值。4、第二种传值方式Model(Spring建议使用的方式)/**
*
* @description: 使用model进行传值
* @param username 接收的参数
* @param model 存储值
* @return
*
*/
@RequestMapping("/welcome")
public String welcome(String username,Model model){
model.addAttribute("username",username);//存储值
return "welcome";
}
在地址栏中输入请求路径及参数,得到结果如下图:



使用上面的方法传值与使用map的效果是一样儿的。很方便。5、与structs2传值方式相比在structs2中,要想传值(username),我们要这样儿写:private String username;//setter ,getter方法用这种方法传值最大的问题就是:如果controller是单例的,则第一个请求未处理完成时,第二个请求到来,username的值还是第一个请求时的值,所以struts2要在action上设置scope参数。spring mvc就不存在这个问题。而且spring mvc中的controller是单例的,执行效率相对于structs2也要高。6、关于model传值中的一个需要注意的地方:model.addAttribute(username);上面的这种情况就是:在传值的时候没有key,那么它的key究竟是什么呢?在spring文档中,明确指出,如果不指定key,则默认使用对象的类型(是类型)做为key。@RequestMapping("/welcome")
public String welcome(String username,Model model){
model.addAttribute("username",username);
//此时默认使用对象的类型作为key-->model.addAttribute("string",username)
model.addAttribute(username);
return "welcome";
}7、在welcome.jsp页面中输入如下代码:



8、输出结果如下图所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息