方式1:通过request设置
@RequestMapping("/data1")
public ModelAndView data(HttpServletRequest request,HttpServletResponse response){
request.setAttribute("data",data1);
ModelAndView mv = new ModelAndView("/WEB-INF/view/data/data1.jsp");
return mv;
}
方式2:通过ModelAndView的addObject() 方法
@RequestMapping("/data2")
public ModelAndView data2(){
System.out.println("data2");
ModelAndView mv = new ModelAndView();
mv.addObject("msg", "明天休息");
mv.addObject("后天看电影");//他的key就是默认为数据类型 (全小写) string
mv.addObject(new Date());//key:date
mv.addObject(new User("小明","12345"));//key:user
mv.addObject(new User("小强","8888"));//key:user,相同key,后面覆盖前面的.
mv.setViewName("data1.jsp");
return mv;
}
方式3:
如果参数中没有返回ModelAndView对象,这时候springMVC是不知道
处理的视图是哪个的?此时就需要配置视图解析器来告诉springMVC返回的视图是怎样的.
@RequestMapping("/data3")
@ModelAttribute(“myUser”)//通过这个注解为返回的数据定义key
public User data3(){
//这种直接返回值的方式,如何指定视图地址呢?
//需要配置视图解析器
//org.springframework.web.servlet.view.InternalResourceViewResolver
//配置视图解析器后
//默认为:前缀+请求路径+后缀
return new User(“小强”,“4321”);
}
如果返回值为String,此时默认视图的地址:前缀+返回值+后缀
在springMVC的配置文件添加这样的bean,在DispatcherServlet.properties中可以找到
prefix:前缀,suffix:后缀
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"></property>
</bean>
如果返回值为String,返回值前加上forward:可以去掉前缀和后缀,请求转发的方式到对应的视图
@RequestMapping("/data5")
public String data5(){
System.out.println("data5");
return "forward:hello.jsp";
}
如果返回值为String,返回值前加上redirect:可以去掉前缀和后缀,重定向的方式到对应的视图
@RequestMapping("/data6")
public String data6(){
System.out.println("data6");
return "redirect:hello.jsp";
}
方式四:可以通过传入Model进行传值
@RequestMapping("/data4")
public String data4(Model m){
System.out.println("data4");
m.addAttribute("user", new User("小乐","7878"));
return "data3";
}