我是 Java EE 编程的新手。按照我对jsp的理解。如果我错了
,请纠正我
- JSP 页面首先转换为 servlet,然后转换为 html,结果 html 页面显示在浏览器中。
现在假设jsp页面显示在浏览器中,即现在它是html页面,我有一个java列表,其中包含我想在当前加载的页面上打印的名称或某种数据。我可以使用 ajax 获取 List 对象,但是我将如何在 html 上显示它,因为 html 无法呈现 java 集合。
纠正我误解流程或基本概念的地方。
谢谢。
我是 Java EE 编程的新手。按照我对jsp的理解。如果我错了
,请纠正我
- JSP 页面首先转换为 servlet,然后转换为 html,结果 html 页面显示在浏览器中。
现在假设jsp页面显示在浏览器中,即现在它是html页面,我有一个java列表,其中包含我想在当前加载的页面上打印的名称或某种数据。我可以使用 ajax 获取 List 对象,但是我将如何在 html 上显示它,因为 html 无法呈现 java 集合。
纠正我误解流程或基本概念的地方。
谢谢。
您可以使用 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
}
}
});
另见
您需要将列表的内容作为文本发送到用户的浏览器(通常会发生这种情况)。
JSON是一种在浏览器和服务器之间传输列表内容的便捷格式,因为它使用 JavaScript 具有简单的可读性并且易于在服务器上生成。
然后,您可以使用 JavaScript 以您喜欢的任何方式显示返回的文本。
一个 JSP 被编译成一个 java servlet 类,它可以处理 HTTP 请求。当 servlet 部署到应用程序服务器时,HTTP 请求被传递给 servlet 进行处理:生成 HTTP 响应,通常包含一些 HTML、状态代码等。
因此,servlet 中的 java 代码循环遍历您的列表并可能生成适当的 HTML 以在浏览器中呈现该列表。
它是否是 AJAX 请求并不重要。AJAX 请求可能会由不同的 servlet 处理,而不是呈现完整的 HTML 页面,它只生成部分页面 - 可能只是<ul><li>...</li></ul>
呈现您的列表。然后,您 HTML 页面中的 javascript 可以通过替换旧版本的列表来更新用户界面。