【问题标题】:Display java list data in jsp after jsp is displayedjsp显示后在jsp中显示java列表数据
【发布时间】:2012-06-22 07:03:02
【问题描述】:

我是 Java EE 编程的新手。按照我对jsp的理解。如果我错了,请纠正我
- JSP页面先转换成servlet再转换成html,结果html页面显示在浏览器中。

现在假设 jsp 页面显示在浏览器中,即现在它是 html 页面,并且我有一个 java 列表,其中包含我想在当前加载的页面上打印的名称或某种数据。我可以使用 ajax 获取 List 对象,但是我将如何在 html 上显示它,因为 html 无法呈现 java 集合。

纠正我对流程或基本概念的误解。

谢谢。

【问题讨论】:

  • 我不确定这是否适用:将数据序列化为JSON并使用AJAX加载数据;然后使用 Javascript 显示接收到的 JSON 中的数据。
  • 或者,您可以使用嵌入在当前 JSP 页面中的 iframe(显示另一个处理您的 java 列表数据的 JSP 页面)。 AJAX 是另一种选择。

标签: java ajax jsp jakarta-ee servlets


【解决方案1】:

您可以使用 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
        }
      }

    });

另见

【讨论】:

  • +1 "从 jsp 你可以使用 ajax"。请注意,这意味着“来自您的 JSP 输出的 HTML,它现在已发送并存在于浏览器中”。到那时,该页面是否使用 JSP 完成就无关紧要了。特别是,发出 Ajax 回复的 servlet 也与 JSP 无关。
  • @JigarJoshi:感谢好友提供这个简单的解决方案。但是如果列表有一个 Map 像 List myList = new List>().
  • 同样可以,尝试为您的数据结构生成与 javascript 对象兼容的 JSON 表示
【解决方案2】:

一个 JSP 被编译成一个 java servlet 类,它可以处理 HTTP 请求。当 servlet 部署到应用服务器时,HTTP 请求被传递给 servlet 进行处理:生成 HTTP 响应,通常包含一些 HTML、状态代码等。

所以它是 servlet 中的 java 代码循环遍历您的列表并可能生成适当的 HTML 以在浏览器中呈现该列表。

它是否是 AJAX 请求并不重要。 AJAX 请求可能会由不同的 servlet 处理,而不是呈现完整的 HTML 页面,它只生成部分页面 - 可能只是 &lt;ul&gt;&lt;li&gt;...&lt;/li&gt;&lt;/ul&gt; 来呈现您的列表。然后,您 HTML 页面中的 javascript 可以通过替换旧版本的列表来更新用户界面。

【讨论】:

    【解决方案3】:

    您需要将列表的内容作为文本发送到用户的浏览器(这是通常发生的情况)。

    JSON 是在浏览器和服务器之间传输列表内容的一种方便格式,因为它使用 JavaScript 具有简单的可读性并且易于在服务器上生成。

    然后您可以使用 JavaScript 以任何您喜欢的方式显示返回的文本。

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      相关资源
      最近更新 更多