在SSM框架中我们会根据前端传递过来的数据进行业务操作,在操作之后会把结果数据返回给前端页面,前端页面才会展示给客户观看,那么后台如何向前端返回数据的呢?
我们在Controller层的Action类中编写的方法返回值通常会有三种:ModelAndView、String、Void;通常在项目中使用时,若不使用ajax传递数据,则选择使用String返回值;如果使用ajax,则使用void返回值;ModelAndView的返回值几乎不使用!
SSM中,返回值为ModelAndView时,向前端返回数据的方法
ModelAndView是什么?它主要用来干什么?
简单的理解就是在Controller层中将后台数据传递给前端。那么怎么传呢?我们就要依靠这个ModelAndView来进行传递。
那么ModelAndView具体是怎么将后台数据传递给前端的呢?下面分别用3种方法进行演示。
Controller层中的代码:
@Controller
public class TestController {
@RequestMapping(value = "/itemlist.action")
public ModelAndView toEdit(Integer id,
HttpServletRequest request,HttpServletResponse response
,HttpSession session,Model model){
//方法一:创建ModelAndView对象,再通过它的方法去设置数据和转发指定到的视图名
//根据前端传递过来的id,来通过sql语句查询数据
Items items = itemService.selectItemsById(id);
//新建一个ModelAndView对象
ModelAndView modelandview = new ModelAndView();
//将查询的数据放入到ModelAndView对象中
//"itemList":为别名,在前端页面上使用
//items:执行sql语句查询到的数据
modelandview.addObject("itemList", items);
//指定视图,也就是把查询的数据放到前端的哪个页面上去
//"itemList":指定到名为这个的视图上
modelandview.setViewName("itemList");
return modelandview;
//方法二:在创建一个ModelAndView对象后,可以直接通过带有参数的构造方法 ModelAndView(String viewName, String attributeName, Object attributeValue) 来返回数据与转发的视图名
//根据前端传递过来的id,来通过sql语句查询数据
Items items = itemService.selectItemsById(id);
return new ModelAndView("itemList","itemList", items);
//简单的理解就是此种方法相当于是在方法一的基础上做了修改,省略了addObject( )和setViewName( )的方法。
//方法三:在创建一个ModelAndView对象后,使用重定向指定展示的视图页面
//根据前端传递过来的id,来通过sql语句查询数据
Items items = itemService.selectItemsById(id);
return new ModelAndView(redirect:/itemlist.action);
}
}
如果使用ModelAndView进行后台向前端传递数据,上面三种方法任选其一。
传递到前端页面 itemList.jsp代码:
查询条件:
商品列表:
商品名称
商品价格
生产日期
商品描述
操作
<%-- 将后台传递过来的数据进行遍历 --%>
${item.name }
${item.price }
${item.detail }
修改