2015-05-03 67 views
0

我一直在閱讀關於MVC的書。混淆是關於模型交流的觀點如何發生的事實。我想了解在使用JSP和servlet的簡單Java Web應用程序中如何發生這種情況。MVC中如何查看模型通信

視圖通常得到它需要從模型

顯示,直接 它是變化的模型對象的狀態控制器的狀態和數據。一旦更改,控制器就會通過請求對象將特定對象傳遞給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()?)

+0

這一切都取決於你遵循的哲學,例如,有人會說視圖和模型不應該直接對話,但應該通過控制器 – MadProgrammer

+0

進行交流,這樣兩者都可以接受?在我的代碼中,視圖和模型是否交談? – DesirePRG

+0

兩者都可以接受,但你應該保持使用其中一種。但是我說控制器在這種情況下直接將模型傳遞給視圖(如果我們假設模型是'User') – MadProgrammer

回答

1

在MVC體系結構中,Controller從請求對象接收數據,操作模型&然後將流轉發給jsp。 Jsp從顯示屬性設置的範圍中提取&。

有幾個範圍可以在其中設置屬性。

Request, Session, ServletContext 

每個範圍具有getAttribute() & setAttribute()

${requestScope.yourValue} : request scope which is also the default 
${sessionScope.yourValue} : retrieving from the session scope 
${applicationScope.yourValue} : retrieving from the context scope 

當JSP被取從相應範圍的值,這是圖談話的模型的例子。除此之外,您不需要遵守此流程,您可以根據您的要求定製應用程序的流程。