Spring 控制器方法的返回值类型ModelAndView当中页面当中数据的传输(通过转发和重定向)

Posted 吃人陈乐游刘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 控制器方法的返回值类型ModelAndView当中页面当中数据的传输(通过转发和重定向)相关的知识,希望对你有一定的参考价值。

1.转发之间传递域对象用HttpServletRequest当中的request.setAttribute();

2.重定向之间传递域对象用HttpSession当中的session.setAttribute(name, value);

/*
 * 
 * 在SpringMVC中如何传递数据到JSP页面上:
 * 
 * 1)常规的返回视图(String、void),在方法中绑定HttpServletRequest对象,通过request域对象传递数据
 * setAttribute-->request的用request.setAttribute("","");
 *  -->resposer的用session.SetAttribute("","");
 * 
 * 2)返回ModelAndView实例,创建ModelAndView实例,设置其视图名和数据Model
 * addObject
 * 
 * 3)常规的返回视图(String、void),在方法中绑定Model或者ModelMap(实际是SpringMVC创建了BindingAwareModelMap对象),通过该对象传递数据
 * addAttribute
 * 
 */
1.常规的返回视图(String、void)
@GetMapping("/booklist")
	public String goToBooklist(HttpServletRequest request) 
	List<Book> books = bookservice.queryAll();
	request.setAttribute("booklist", books);
	return "manager/booklist";
        //这个时候我就把从数据库当中所查询到的books集合的数据
        //作为域对象传递到了manager/booklist 经过视图解析器的后的页面
	
2.返回ModelAndView实例
@GetMapping("/booklist")
public ModelAndView goToBookListModelAndView() 
	ModelAndView mv=new ModelAndView();
	List<Book> books = bookservice.queryAll();
	mv.setViewName("manager/booklist");	
	mv.addObject("booklist", books);
	return mv;
	
 
//对应的进行访问的index.jsp转发代码是
  <div class="right w-80">
    <iframe style="width:99%; height:600px; border:1px; background-color: #DDD;" name="frm"
    src="$pageContext.request.contextPath/manager/booklist"></iframe>
  </div>
//对应的servlet接收的booklist.jsp为
<table>
  <tr>
    <th>序号</th><th>书名</th><th>作者</th><th>分类</th><th>价格</th><th>出版社</th><th>出版时间</th><th>库存</th><th>操作</th>
  </tr>
<c:forEach items="$booklist" var="book" varStatus="stat">
  <tr>
    <td>$stat.count</td>
    <td>$book.name </td>
    <td>$book.author </td>
    <td>$book.category </td>
    <td>$book.price </td>
    <td>$book.publisher </td>
    <td>$book.publishdate </td>
    <td>$book.count </td>
    <td class="op"><a href=" ">删除</a> <a href=" ">修改</a></td>
  </tr>
</c:forEach>
</table>

3. 常规的返回视图(String、void),在方法中绑定Model或者ModelMap

@GetMapping("/booklist")
public String goToBookListByModelMethod(ModelMap mm) 
	List<Book> books = bookservice.queryAll();
	mm.addAttribute("booklist", books);
	return "manager/booklist";

总结:就是一个域对象的问题。

以上是关于Spring 控制器方法的返回值类型ModelAndView当中页面当中数据的传输(通过转发和重定向)的主要内容,如果未能解决你的问题,请参考以下文章

Spring 控制器方法的返回值类型ModelAndView当中页面当中数据的传输(通过转发和重定向)

Spring 控制器方法的返回值类型ModelAndView当中页面当中数据的传输(通过转发和重定向)

Spring 控制器方法的返回值类型ModelAndView当中页面当中数据的传输(通过转发和重定向)

Spring之模型

如果 Spring MVC 控制器方法不返回值,返回啥?

Spring MVC 控制器方法的有效返回类型是啥?