2012-06-20 151 views
1

我是Java EE編程新手。遵循我對jsp的理解。如果我錯了,請聲明我
- JSP頁面先轉換爲servlet然後轉換爲html,然後生成的html頁面顯示在瀏覽器中。顯示jsp後顯示jsp中的java列表數據

現在假設jsp頁面顯示在瀏覽器中,即現在它是html頁面,並且我有一個java列表,其中包含名稱或某種數據,我想要在當前加載的頁面上進行打印。我可以使用ajax獲取List對象,但是我將如何在html上顯示它,因爲html不能渲染java集合。

糾正我錯誤理解流程或基本概念的地方。

謝謝。

+0

我不確定這是否適用:將數據序列化爲JSON並使用AJAX加載數據;然後使用Javascript來顯示收到的JSON中的數據。 – nhahtdh

+0

或者,您可以使用嵌入當前JSP頁面的iframe(顯示另一個處理您的java List數據的JSP頁面)。 AJAX是另一種選擇。 –

回答

3

你可以使用AJAX(使用jQuery很容易),撥打電話到你的servlet現在

function callMe(){ 
    $.ajax({ 
     type: "POST", 
     url: "/someServlet", 
     data: { param1: "val1" , param2: "val2" } 
    }).done(function(data) { 
     //TODO 
    }); 
} 

在Servlet中,在doPost(),使用GSON產生JSON表示您的收藏

String parameter1 = request.getParameter(param1); 
String parameter2 = request.getParameter(param2); 
//call to service to generate the collection 
//for example List<Employee> 
List<Employee> employees = someService(parameter1, parameter2); 
//using google's gson 
Gson gson = new Gson(); 
String json = new Gson().toJson(employees); 
response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
response.getWriter().write(json); 

現在我們在javascript函數中作爲javascript對象數組的響應,所以修改爲

}).done(function(data) { 
     //some processing for display 
     var len = data.length 
     for (var i=0; i<len; ++i) { 
       var employeeFirstName = data[i].firstName; 
       var employeeLastName = data[i].lastName; 
       //set it to some DIV, or do the processing you want 
     } 
     } 

    }); 

另請參見

+0

+1「從jsp你可以使用ajax」。請注意,這意味着「從JSP輸出的HTML中,現在已經發送並存在於瀏覽器中」。在那個時候,如果這個頁面是用JSP完成的,那麼它是無關緊要的。特別是,發送Ajax應答的servlet與JSP無關。 – Thilo

+0

@Thilo更新它以消除可能出現的混淆 –

+0

@JigarJoshi:感謝好友提供這個簡單的解決方案。但是如果列表有一個類似於List myList = new List >()的地圖呢? –

0

您需要將列表中的內容作爲文本發送到用戶的瀏覽器(通常會發生這種情況)。

瀏覽器和服務器之間傳輸列表內容的一種方便的格式是JSON,這是因爲它具有JavaScript的簡單可讀性並且易於在服務器上生成。

然後,您可以使用JavaScript以任何方式顯示返回的文本。

0

甲JSP被編譯成一個Java servlet類,它可以處理HTTP請求。當servlet部署到應用程序服務器時,HTTP請求被傳遞給servlet進行處理:生成的HTTP響應通常包含一些HTML,狀態碼等。

所以這是servlet中的Java代碼,它循環在您的列表上,並且可能會生成適當的HTML以在瀏覽器中呈現該列表。

不管它是否是AJAX請求並不重要。 AJAX請求不是呈現完整的HTML頁面,而是由不同的servlet處理,該servlet僅生成部分頁面 - 可能只是用於呈現列表的<ul><li>...</li></ul>。然後,您的HTML頁面中的JavaScript可以通過替換舊版本的列表來更新用戶界面。