Java jsp/gsp中b/w传递模型与请求对象使用的差异

Java jsp/gsp中b/w传递模型与请求对象使用的差异,java,jsp,spring-mvc,servlets,grails,Java,Jsp,Spring Mvc,Servlets,Grails,我一直在研究spring和grails(grails是基于spring构建的) 我们可以通过请求对象或模型将数据从控制器传递到视图(jsp/gsp) 通过模型传递数据是首选,因为它很容易 代码比较: Spring : controller request.setAttribute("name","india"); view ${pageContext.request.getAttribute('name')} controller ModelAndVi

我一直在研究spring和grails(grails是基于spring构建的)

我们可以通过请求对象或模型将数据从控制器传递到视图(jsp/gsp)

通过模型传递数据是首选,因为它很容易

代码比较:

Spring :
    controller  request.setAttribute("name","india");
    view        ${pageContext.request.getAttribute('name')}

    controller  ModelAndView("viewname",modelObject)
Grails
    controller  request.setAttribute("name","india")
    view        ${request.getAttribute("name")}

    controller  render(view:"viewName",model:[name:"india"])
我认为请求对象除了此之外还有很多其他功能

所以我的问题是:如果从控制器到视图的数据传递可以通过请求对象本身来完成,为什么java技术需要创建一个类似概念的模型

需要是发明之母


我的意思是说,一定有一项任务只能通过模型来实现。

我想到了一些事情,但它们只是猜测原因

主要是关注点分离。修改请求(即输入)以保持输出似乎滥用了这一点。模型显然是输出的,并且只输出

通过使用模型明确定义输出的构成,Spring和Grails等框架可以将其他过程仅应用于模型。例如,我想到了Grails过滤器


这是我的看法。

控制器收集并需要提供给视图的数据应该放在模型中。这就是在这种情况下模型的定义。决不要为此使用请求属性