在以往的web程序中,我们是用request来获得前台提交的参数的,在MVC中,我们有更好的传递方式
1.数据传递
1.1提交的域名称和处理方法的参数名一致
提交数据 : http://localhost:8080/hello?name=kuangshen
处理方法 :
@RequestMapping("/hello")
public String hello(String name){
System.out.println(name);
return "hello";
}
后台输出 : kuangshen
1.2提交的域名称和处理方法的参数名不一致
提交数据 : http://localhost:8080/hello?username=kuangshen
处理方法 :
//@RequestParam("username") : username提交的域的名称 .
@RequestMapping("/hello")
public String hello(@RequestParam("username") String name){
System.out.println(name);
return "hello";
}
后台输出 : kuangshen
1.3提交的是一个对象
要求提交的表单域和对象的属性名一致 , 参数使用对象即可
1、实体类
public class User {
private int id;
private String name;
private int age;
//构造
//get/set
//tostring()
}
2、提交数据 : http://localhost:8080/mvc04/user?name=kuangshen&id=1&age=15
3、处理方法 :
@RequestMapping("/user")
public String user(User user){
System.out.println(user);
return "hello";
}
后台输出 : User { id=1, name='kuangshen', age=15 }
说明:如果使用对象的话,前端传递的参数名和对象名必须一致,否则就是null。
2.数据处理
所谓数据处理就是将接收的数据重新显示到前端其他页面
Model或者ModelMap
- Model 和 ModelMap 的实例都是 spring mvc 框架来自动创建并作为控制器方法参数传入,用户无需自己创建。
- return 需要返回知道的页面路径。
//控制层java代码
@RequestMapping("admin_category_list")
public String list(Model model){
List<Category> cs = categoryService.list();
model.addAttribute("cs", cs);
//服务器跳转到"admin/listCategory"视图
//“admin/listCategory” 会根据后续的springMVC.xml 配置文件,跳转到 WEB-INF/jsp/admin/listCategory.jsp 文件
return "admin/listCategory";
}
注意:如果在控制层上的方法声明了注解@ResponseBody ,则会直接将返回值输出到页面。
//jsp页面写入
<!-- 获取值的时候,对应的是addAttribute的第一个参数!取了个别名为c-->
<c:forEach items="{cs}" var="c">
<tr>
<td>{c.id}</td>
<td>${c.name}</td>
</tr>
</c:forEach>
ModelAndView
- ModelAndView的实例是需要我们手动new的,这也是和ModelMap的一个区别。 而且,ModelAndView 可以自己寻址,只需要return 返回其对象即可。
//控制层java代码
@RequestMapping("admin_category_list")
public ModelAndView list() {
//创建一个模型视图对象
ModelAndView mav = new ModelAndView();
List<Category> cs = categoryService.list();
mav.addObject("cs", cs);
mav.setViewName("admin/listCategory");
return mav;
}
//jsp页面写入
<!-- 获取值的时候,对应的是addAttribute的第一个参数!取了个别名为c-->
<c:forEach items="{cs}" var="c">
<tr>
<td>{c.id}</td>
<td>${c.name}</td>
</tr>
</c:forEach>
Comments | NOTHING