2012-06-20 47 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可以通过替换旧版本的列表来更新用户界面。