- spring mvc有两种传递参数的方式
- 使用ModelAndView对象为界面视图添加参数属性
- 使用HttpServletRequest设置参数,此参数在请求的作用域中共享
- 使用Map、Model、ModelMap绑定数据
ModelAndView 视图传参
- ModelAndView对象可以使用 addObject( key, value ) 方法加入参数,传递但前台的界面视图,然后跳转到指定的页面,传递的参数可以是对象、字符串、数组、集合等
- 在jsp界面接收参数使用 ${key}的语法接收参数
示例
- MainController.java
@Controller public class MainController{
@RequestMapping(value="login") public ModelAndView login(String name,String age,String adress){ ModelAndView mav = new ModelAndView(); mav.setViewName("welcome"); //返回的文件名
mav.addObject("name", name); mav.addObject("age", age); mav.addObject("adress", adress);
//List List<String> list = new ArrayList<String>(); list.add(name); list.add(age); list.add(adress); mav.addObject("bookList", list);
//Map Map<String,String> map = new HashMap<String,String>(); map.put("name", name); map.put("age", age); map.put("adress", adress); mav.addObject("map",map);
return mav; }
|
- welcome.jsp
<body> <!-- 输出普通字符 --> ${name} <br/> ${age} <br/> ${adress} <br/> <!-- 输出List --> <p>书籍列表</p> <c:forEach items="${bookList}" var="node"> <c:out value="${node}"></c:out> </c:forEach> <br/> <br/>
<!-- 输出Map --> <c:forEach items="${map}" var="node"> 姓名:<c:out value="${node.key}"></c:out> 住址:<c:out value="${node.value}"></c:out> <br/> </c:forEach> </body> |
HttpServletRequest 作用域传参
- 使用HttpServletRequest中的setAttribute()方法可以讲参数保存在作用域中,视图界面可以直接使用参数
示例
@Controller
public class UserController {
@RequestMapping("/login")
public String login(HttpServletRequest request, String name) {
request.setAttribute(name);
return "home";
}
}
Map、Model、ModelMap 绑定数据
- Model 对象负责在控制器和展现数据的视图之间传递数据。
- 入参为Model、ModelMap 或 Map 时,处理方法返回时,数据将会复制到 Servlet Response 的属性中,自动添加到模型中,这样视图就能在这里找到它们了
- 参数的获取方式也是${message}
Model方法 |
说明 |
addAttribute(key,value) |
绑定参数,key-value形式 |
addAttribute(Object var1) |
绑定参数对象 |
addAllAttributes(Collection<?> var1) |
绑定集合参数 |
addAllAttributes(Map<String, ?> var1) |
绑定Map对象参数 |
mergeAttributes(Map<String, ?> var1) |
合并Map对象参数 |
containsAttribute(String var1) |
是否包含参数 |
getAttribute(String var1) |
根据参数名获取绑定参数 |
asMap() |
返回参数的Map集合 |
ModelMap方法 |
说明 |
addAttribute(key,value) |
绑定参数,key-value形式 |
addAttribute(Object var1) |
绑定参数对象 |
addAllAttributes(Collection<?> var1) |
绑定集合参数 |
addAllAttributes(Map<String, ?> var1) |
绑定Map对象参数 |
mergeAttributes(Map<String, ?> var1) |
合并Map对象参数 |
containsAttribute(String var1) |
是否包含参数 |
示例
@Controller
public class UserController {
@RequestMapping("/login")
public String login(String name, Model model) {
map.put("names", Arrays.asList("caoyc", "zhh", "cjx"));
model.addAttribute("name", name);
modelMap.addAttribute("name", name);
modelMap.put("name", name);
return "home";
}
}