当前位置:首页>财经>正文

springmvc-Model和ModelAndView的区别 spring mvc jsp怎么获得ModelAndView设置的值 急急急!

2023-07-18 12:04:17 互联网 未知 财经

 springmvc-Model和ModelAndView的区别 spring mvc jsp怎么获得ModelAndView设置的值 急急急!

springmvc-Model和ModelAndView的区别

前言
用过springMvc的小伙伴都知道,一般而言我们返回页面视图的时候会有两种可能,就是本文题目中的两个类。其实本文就是想要对比一下这两个类在spring的视图解析中的作用以及区别。
区别
就我个人而言,我自己觉得这两者之间是没有什么区别的?实际上,这两者之间有着很大的区别,具体就表现在Model只是用来传输数据的,并不会进行业务的寻址。但是,ModelAndView却是可以进行业务寻址的,就是设置对应的要请求的静态文件,这里的静态文件指的是类似jsp的文件。当然,两者还有一个最大的区别,那就是Model是每一次请求都必须会带着的,但是ModelAndView是需要我们自己去新建的。
代码示例
首先是Model传递数据。
@Controller
public class FreemarkerController {
@SuppressWarnings("unchecked")
@RequestMapping(method = RequestMethod.POST, value = "/freemarker")
public String getFtl(Model model) {
// 构造填充数据的Map
Map map = new HashMap()
List testVos = new ArrayList<>()
TestVo testVo = new TestVo()
testVo.setName("fulei")
TestVo testVo1 = new TestVo()
testVo1.setName("wangmeng")
testVos.add(testVo)
testVos.add(testVo1)
map.put("user", "love")
map.put("url", "http://www.baidu.com/")
map.put("name", "百度")
map.put("testVos", testVos)
model.addAllAttributes(map)
return "test"
}
}
其次就是ModelAndView。
@RequestMapping(method = RequestMethod.POST, value = "/freemarker")
public ModelAndView getFtlByModelAndView() {
ModelAndView modelAndView = new ModelAndView()
// 构造填充数据的Map
Map map = new HashMap()
List testVos = new ArrayList<>()
TestVo testVo = new TestVo()
testVo.setName("fulei")
TestVo testVo1 = new TestVo()
testVo1.setName("wangmeng")
testVos.add(testVo)
testVos.add(testVo1)
map.put("user", "love")
map.put("url", "http://www.baidu.com/")
map.put("name", "百度")
map.put("testVos", testVos)
modelAndView.addAllObjects(map)
return modelAndView
}
从上面我们可以看得出来这两个之间还是有一定的区别的,当然具体的区别也就如我上面所描述的那样了。
总结
这篇博文主要是讨论下这个看似不会有坑的地方的一些小问题,算是对今天做的东西的一个总结吧。有时间的话,再详细得谈谈在这边遇到的问题。

spring mvc jsp怎么获得ModelAndView设置的值 急急急!

Map model =new HashMap
mode.put(list,userlist)//userlist是个Arraylist之类的

return new ModelAndView("page",model)

在jsp页面中使用jstl标签取出值以下自动循环取出每个值
<c:forEach items="${list}" var="user">
${user.username}
${user.password}
${user.address.value}//可以去对象中的对象的值属性

</

Spring MVC3中的 ModelAndView和@ModelAttribute的区别

postHandle (HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView) 方法,由preHandle 方法的解释我们知道这个方法包括后面要说到的afterCompletion 方法都只能是在当前所属的Interceptor 的preHandle 方法的返回值为true 时才能被调用。postHandle 方法,顾名思义就是在当前请求进行处理之后,也就是Controller 方法调用之后执行,但是它会在DispatcherServlet 进行视图返回渲染之前被调用,所以我们可以在这个方法中对Controller 处理之后的ModelAndView 对象进行操作。
postHandle 方法被调用的方向跟preHandle 是相反的,也就是说先声明的Interceptor 的postHandle 方法反而会后执行,这和Struts2 里面的Interceptor 的执行过程有点类型。Struts2 里面的Interceptor 的执行过程也是链式的,只是在Struts2 里面需要手动调用ActionInvocation 的invoke 方法来触发对下一个Interceptor 或者是Action 的调用,然后每一个Interceptor 中在invoke 方法调用之前的内容都是按照声明顺序执行的,而invoke 方法之后的内容就是反向的。

springmvc 中modelandview参数model怎样传递给前台

ModelAndView mav = new ModelAndView()
    mav.addObject("contract", contract)
    mav.addObject("page", maintenancePage)
    mav.setViewName("cs/maintenance/list")
    return mav