【发布时间】:2015-05-03 04:48:36
【问题描述】:
我一直在从一本书中阅读有关 MVC 的信息。混淆是关于模型通信的视图如何发生的事实。我想了解这在使用 JSP 和 servlet 的简单 Java Web 应用程序中是如何发生的。
视图通常直接获取它需要显示的状态和数据 来自模型
它是改变模型对象状态的控制器。一旦更改,控制器就会通过请求对象将该特定对象传递给 JSP 页面。
在控制器 servlet 中
rd = request.getRequestDispatcher("/success.jsp");
User userObj = new User(username, password);
request.setAttribute("user", userObj);
rd.forward(request, response);
在success.jsp中
<%
User bean=(User)request.getAttribute("user");
out.print("Welcome, "+bean.getName());
%>
请求分派器将请求和响应对象转发到jsp页面。 jsp 页面使用请求对象来访问修改后的模型对象 (userObj)。这就是视图与模型对话的意思吗?这是视图和模型之间通信的基本方式吗? (我的意思是通过request.getAttribute()?)
【问题讨论】:
-
这完全取决于您遵循哪种理念,例如,有些人会说视图和模型不应该直接相互通信,而应该通过控制器进行通信
-
所以两者都被接受?在我的代码中,视图和模型会说话吗?
-
任何一种都可以接受,但您应该保持使用其中一种。但我说控制器在这种情况下直接将模型传递给视图(如果我们假设模型是
User) -
如果我的视图不与模型对话,那么在实际代码中视图与模型的通信是如何发生的?
-
基于 Web 的断开连接特性,视图必须与控制器通信才能将更改传达给模型,反之亦然
标签: java jsp servlets model-view-controller