2013-06-27 306 views
-1

我知道在理論上是什麼意思MVC,但我從來沒有與這個model.In開發我的servlet我從數據庫中獲取列表使用MVC模式與JSP

int pageSize = 20; 
     FetchOptions fetchOptions = FetchOptions.Builder.withLimit(pageSize); 

     Query q = new Query("post").addSort("time", SortDirection.DESCENDING); 
     PreparedQuery pq = datastore.prepare(q); 

     QueryResultList<Entity> results = pq.asQueryResultList(fetchOptions); 
     System.out.println("-------------------"); 
     for (Entity entity : results) { 

System.out.println(entity.getProperty ("content")); 
System.out.println(entity.getProperty ("time")); 
     } 

現在我要顯示這樣的結果(內容和時間)在jsp頁面中。我不知道要這樣做,因爲我認爲我不能使用PrintWriter,因爲jsp頁面已經包含了所有的CSS,表單,我認爲如果我將這些代碼(從數據庫中獲取數據)放入該jsp頁面,這將是一個違規,它不會是一個MVC模型?

回答

2

對,將代碼放入JSP將違反MVC模式,因爲您將控制器代碼放在視圖中。

如果是這樣的servlet代碼,不是你應該做的:

request.getRequestDispatcher("page.jsp").forward(request, response); 
          ^path to your page 

此外,你應該將數據添加到會話

request.getSession().setAttribute("content", results); 

在JSP頁面中,你剛纔讀這個數據。

+0

根據您的需要使用頁面/請求/會話/應用程序上下文。 –

+0

進入頁面後,可以使用JSTL的foreach循環和表達式語言來訪問要顯示的屬性 – sunrize920

0

正如另一個答案所說,如果您將該代碼放入JSP中,它將違反MVC模式,您可能需要重新考慮您的項目設置,並使用類似Struts的系統將您的實體文件鏈接到JSP,這似乎是一個漂亮常見的方式去處理事情,有很多關於它的文檔在這個網站和網絡周圍的其他地方,一個好的開始可能是http://struts.apache.org/release/2.0.x/docs/home.html

我特別知道你似乎試圖做什麼Struts系統它會像

<s:property value="variable" /> 

然後,這將保持你的模型,並查看分開。