SpingMVC Model 和ModelAndView,以及从参数的设置和接收

方法返回的类型是String,必须用Model

@RequestMapping("/hello")
public String hello(Model model)
{

    //相当于request.setAttribute
    model.addAttribute("message","hello,my first spring mvc 000~ model ~~~~");
    return "hello";//执行完hello方法后会跳转到hello.jsp  由前缀路径,+后缀.jsp拼接而成
}

 

方法返回类型ModelAndView

@RequestMapping("/hello2")
public ModelAndView hello2()
{
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("message", "hello2,modelAndView springmvc");
    modelAndView.setViewName("hello2");
    return  modelAndView;

}

setViewName方法可以直接指定jsp页面的路径,这里的地址前缀和后缀已经在spring-mvc.xml文件中定义好了,可直接简写modelAndView.setViewName("hello2");。如未定义前后缀可以使用 modelAndView.setViewName("/WEB-INF/views/hello2.jsp");或者new ModelAndView("/WEB-INF/views/hello2.jsp");完整的路径进行传入

这里的路径默认是转发的形式,如果要重定向,可以使用new ModelAndView("redirect:hello2");或者 modelAndView.setViewName("redirect:hello2");

 

接收页面参数,可以用@RequestParam("paramName") 来获取。如下就可以获取页面的name以及passWord

@RequestMapping("/login")//web.xml配置拦截"*.do"时,此处映射的/login.do可以省略为/login  Spring底层实现的
public String login(@RequestParam("name")String name, @RequestParam("passWord") String passWord, Model model)
{
    Map map = new HashMap();
    map.put(null,"aaa");
    System.out.println(map);
    model.addAttribute("name",name);
    return "success";
}

 

如果提交的页面参数过多,可以直接用对象的形式接收,此时对象是被组装好参数的对象

@RequestMapping("/login2")
public String login2(User user,Model model)
{
    String name = user.getName();
    System.out.println(name);
    model.addAttribute("name",name);
    return "success";
}
上一篇:Sping——MVC(参数传递练习)


下一篇:Spring Boot——十、Spring Boot 中的异常处理与单元测试