注意: 这里的返回就是返回到jsp页面
**** controller接收前台数据的方式,以及将处理后的model 传向前台*****
1、前台传递数据的接受:传的属性名和javabean的属性相同
(1)、使用基本类型,或引用类型进行接受:
@RequestMapping(value="/select")
PublicString select(String name,int age,Model model){
// 这样这里的name,age 就是我们前台传递的参数,也是我们Javabean中的属性。
// 这样就可以向前台传值
model.addAttribute("user",user);
Return"list";
}
}
(2)、使用pojo的方式接受: 这里要求,前台属性的值要和javabean的属性名称一样
// 这种方式使用的比较多
@RequestMapping(value="select")
PublicString select(User user ,Model model){
Stringname= user.getName();
Stringage=user.getAge();
// 按照这些属性进行查询,之后将数据集合放到model中
LIst<Map<String,Object>> list= new ArrayList<Map<String,Object>>();
list="按照条件查询的结果";
model.addAttribute("userlist",list);
Return"list";
}
(3)、如果前台有相同name值的数据传递则要使用数组来接收,相同名称的可能是有这样的数值但更多的是多选框,所以我们要使用数组来接收这样的值
@RequestMapping(value="select.do")
public Stringhello(String []username,Model model){
System.out.println(username.length);
Stringname1=username[0];
Stringname2=username[1];
model.addAttribute("helloworld", "hello"+name1+name2);
return"welcome";
}
(4)、这种方式和servlet 接受请求参数的方式是相同的,因为springmvc 提供了servlet的api 所以我们可以使用HttpServletRequest request 来获取参数
@RequestMapping(value="/hello.do")
publicString hello(HttpServletRequestrequest,Model model){
String name=request.getParameter("name");
System.out.println(name);
model.addAttribute("helloworld","hello"+name);
return"welcome";
}
**** 都看到了我们上面列举了参数接受方式,但是我们发现处理后的model(数据模型)的接受都是使用Model 这个对象来传的,这也是推存使用的,但还有其他方式,其实不管使用那种方式技术实现都是一样的,参数传递具体方式:******
2、 将数据模型向前台传值:
(1)、向前台传递一个bean或基本类型的值
@RequestMapping(value="select")
// 使用model 向前台传对象
PublicString select(User user ,Model model){
Stringname= user.getId();
// 按照这些属性进行查询,之后将数据放到model中
User user="按照id获取的数据"
model.addAttribute("user",user);
Return"list";
}
(2)、向前台传list集合
@RequestMapping(value="/hello.do")
public String hello(User user,Modelmodel){
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
Map<String,Object> map1= newHashMap<String,Object>();
Map<String,Object> map2= newHashMap<String,Object>();
map1.put("name","name1");
map1.put("age", 1);
map2.put("name","name2");
map2.put("age", 2);
list.add(map1);
list.add(map2);
//将list集合放在model中,在前台获取这个集合并进行遍历
model.addAttribute("ulist",list);
return"welcome";
}
前台使用c标签
<c:forEach items="${ulist}" var="user" >
${user.name}
${user.age}
</c:forEach>
****前面的几种都使用了model来传值,这也是比较推存的方式,但还有几种方式在这里给大家列出来:
(3)、ModelAndView 从字面意思我们就能看出这个对象包括,数据模型和视图名称
Public ModelAndViewselect(User user){
ModelAndView mav=new ModelAndView ("view_value");
// view 可以按照上面的这样写,也可以按照下面这样写,也就是view的两种赋值方式
// mav.setViewName("view_value"); 指定视图名
mav.addObject("key1",value);
mav.addObject("key2",value);
return modelAndView ;
}
(4)、使用map 来存储model 然后向前台传值
@RequestMapping(value="/hello.do")
public String hello(User user,Map<String,Object> map){
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
Map<String,Object> map1= newHashMap<String,Object>();
Map<String,Object> map2= newHashMap<String,Object>();
map1.put("name","name1");
map1.put("age", 1);
map2.put("name","name2");
map2.put("age", 2);
list.add(map1);
list.add(map2);
//将list集合放在model中,在前台获取这个集合并进行遍历,map和model是很相似的。
map.addAttribute("ulist",list);
return"welcome";
}
看看花儿冲破北疆漫漫寒冬,妖娆绽放;