如何在jsp页面中动态创建表的行和列

时间:2013-09-28 12:29:13

标签: html database jsp select html-table

我正在尝试从数据库中检索数据到表中。 但是数据必须动态加载。

如何动态创建行和列我不知道? 如果它只是要创建的行,那么我会轻松地完成它,但我也想在页面上动态创建列,这就是为什么我很困惑如何执行它?

我的JSP代码:

<table width="59%" border="1">
    <%
        MySql1 o = new MySql1();
        o.connect();
        ResultSet r;
        int counter=1;
        String q = "select * from category_master;";
        r = o.getdata(q);
        while(r.next())
        {
            %>
                <tr>
                     <td><%= r.getString(1)%></td>                                      
                </tr>
            <% 
        }
    %>
</table>

现在我正在显示<td>中的第一列,但如果用户不知道要检索多少列,那该怎么办? 在select query中,我使用了*,因此我对于<td>感到困惑。 我想要动态,因为我假设我也会使用任何文本框或网址动态传递表名。

此处MySql 1是一个具有执行操作的方法的类文件。 connect()用于连接db,getdata()用于检索作为参数传递的查询数据,getdata()方法的返回类型为Resultset

这就是为什么我想要所有动态,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:7)

试试这段代码:

<table width="59%" border="1">
    <%
        MySql1 o = new MySql1();
        o.connect();
        ResultSet r;
        int counter=1;
        String q = "select * from category_master;";
        r = o.getdata(q);
        ResultSetMetaData metaData = r.getMetaData();
        while(r.next())
        {
            %>
                <tr>
                 <%
                 for(int i = 1; i<=metaData.getColumnCount();i++)
                    { %>
                     <td>
                     <%= r.getString(i)%>
                     </td>
                <% 
                    }
                %>                   
                </tr>
            <% 
        }
    %>
</table>

答案 1 :(得分:0)

我做了像这样的测试的jsp页面

这里是test.jsp

<table width="59%" border="1">
    <thead>
    <tr>
        <td>Volume</td>
        <td>XmlTitle</td>
        <td>getYear</td>
    </tr>
    </thead>
    <tbody>
    <%
        Journal journal = Journal.findByCode("antipoda");
        List<Issue> normalIssues = journal.getIssuesOfType(IssueType.NORMAL);
        for (Issue issue : normalIssues) {

            out.print(String.format("<tr>" +
                                        "<td>%s</td>" +
                                        "<td>%s</td>" +
                                        "<td>%d</td>" +
                                    "</tr>",
                    issue.getVolume(),issue.getXmlTitle(),issue.getYear()));
        }

        out.flush();
    %>
    </tbody>
</table>

您可以将scriptlet更改为通过要显示的模型进行迭代的代码

希望这会有所帮助