由于我在 Web 应用程序方面根本没有太多经验,所以我整天都在为此苦苦挣扎。
我有一个 index.jsp
页面,它向 Servlet
发送请求,创建一个非常大的 csv
表(5 列,500.000 + 行)。由于表格已排序,我想获取前 100 行并将它们显示在 html
表格中。因此 Servlet
会将请求对象重定向到一个 table.jsp
,数据应该显示在该位置。
我想我需要一些关于一般方法的建议。我想到了几种方法和问题:
在创建
csv
文件时,将前 100 行存储在数组数组中,并通过请求对象将它们发送到jsp
页面,在那里它们可以显示在html 表格
中。只发送
csv
文件的路径,在jsp
页面直接读取前100行。选择
json
作为传输格式有用吗?一个包含 500 个字符串的对象是否太多而无法在请求对象中传输?
请求对象是否是将数据传输到
jsp
页面的良好做法?
谢谢你的帮助
最佳答案
JSP页面被容器编译成servlets,所以它们最终是servlets,你可以在其中使用Java代码。因此,无需像使用 Javascript 解释数据时那样使用 JSON
作为传输格式。 JSP 在服务器端进行评估。
所以,我会这样做:
- 在您的 servlet 中,检索数据
- 将请求转发给 JSP(这发生在服务器端;客户端(浏览器)无法像重定向一样识别此步骤)
- 在 JSP 中构建表格(并呈现响应)
Servlet 代码:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<MyObject> listData = ...; // however you get the data
// set the attribute in the request to access it on the JSP
request.setAttribute("listData", listData);
RequestDispatcher rd = getServletContext()
.getRequestDispatcher("/path/to/page.jsp");
rd.forward(request, response);
}
JSP(使用 JSTL 标签库):
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- html, head and starting body tag ... -->
<table>
<c:forEach var="element" items="${listData}">
<tr>
<td>${element.abc}</td>
<td>${element.def}</td>
<td>${element.ghi}</td>
</tr>
</c:forEach>
</table>
其中 MyObject
是一个包含实例变量 abc
、def
和 ghi
的对象,并具有 getter 方法为他们。
请注意,如果您的 WEB-INF/lib 文件夹中没有 JSTL jar(可以下载 here),则需要它。
关于javascript - 将数据从servlet 发送到jsp,显示在html 表格中。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14819537/