Database 如何对JSP页面中未填充到标准结果表的数据库结果进行排序
我有一个标准的TomcatWebApp,它查询MySQL数据库并将结果从servlet发送回JSP。JSP显示结果时不使用传统的数据表,而是在加载时使用scriplet将结果填充到各自的HTML表中(每个结果行一个表) 下面是一个粗略的代码片段,演示如何填充JSP页面:Database 如何对JSP页面中未填充到标准结果表的数据库结果进行排序,database,jsp,sorting,servlets,Database,Jsp,Sorting,Servlets,我有一个标准的TomcatWebApp,它查询MySQL数据库并将结果从servlet发送回JSP。JSP显示结果时不使用传统的数据表,而是在加载时使用scriplet将结果填充到各自的HTML表中(每个结果行一个表) 下面是一个粗略的代码片段,演示如何填充JSP页面: <html> <body> ... <% String[][] results = ((String[][])session.getAttribute("resul
<html>
<body>
...
<%
String[][] results = ((String[][])session.getAttribute("results"));
for (int i = 0; i < results.length; i++)
{
String[] rowResult = (String[])results[i];
String tableId = "table_" + i;
String attribOne = rowResult[0];
String attribTwo = rowResult[1];
%>
<table id="<%= tableId %>" >
<script>
var table = document.getElementById("<%= tableId %>");
table.setAttribute("attribOne", "<%= attribOne %>");
table.setAttribute("attribTwo", "<%= attribTwo %>");
</script>
...
</table>
<%
}
%>
</body>
</html>
...
var table=document.getElementById(“”);
table.setAttribute(“attribOne”和“”);
table.setAttribute(“attribtoo”,即“”);
...
我想知道在页面上最初填充结果之后,重新排序(排序)结果的最佳方法。页面顶部有一个下拉菜单,其值对应于每个表上要排序的属性。实际上,我需要根据用户的排序选择移动表
我已考虑过以下选择:
- 将多个结果集从Servlet传递到JSP页面,如果选择了不同的排序属性,则重新显示(刷新?)页面。这种方法的缺点很多。我必须在数据库中运行多个数据库查询(代价高昂),将同一结果集的多个副本返回给JSP(效率低下),并且可能需要刷新页面(恼人),同时只想重新排列结果
- 使用JavaScript/jQuery重新排列页面上的表。这可能很难实现,并且可能需要很长时间来处理/重新显示。我不想让用户为了结果重新排序而等待很长时间
-Bob既然您已经列出了两个最明显的解决方案,那么这里有一个值得尝试的替代方案 您可以定义一个POJO类来存放数据,而不是将其作为字符串[][]传递给JSP 示例
Class Row{
String attribOne;
String attribTwo
}
这样您就可以将它作为List-
如果数据不是很大,可以将其保存在会话变量中,并使用多种方式对其进行排序
唯一的缺点是,表中的每个可排序列都有多个比较器
当然不是最佳解决方案,我为您提供了一个替代方案,但如果您使用JS,它肯定可以避免额外的Db调用/浏览器暂停
我还是建议使用一些JavaScript/jQuery库/插件(比如)对页面上的结果进行排序。这样对速度的影响最小。它们不是很难使用,它们是快速和可配置的。但是,当然,您需要使用HTML表。