在以往的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>

醉后不知天在水,满船清梦压星河