【问题标题】:displaying data from ResultSet in html table在 html 表中显示来自 ResultSet 的数据
【发布时间】:2014-12-25 13:15:37
【问题描述】:

大家好,我想在 HTML 表中显示来自 ResultSet 的数据.. 这是我的代码

while(result.next()){
            writer.println("<table BORDER=1 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>"
                    + "<tr><th>FIRSTNAME</th><th>LASTNAME</th></tr>"
                    + "<tr><td><center>"+result.getString("firstname")+"</center></td>"
                    + "<td><center>"+result.getString("lastname")+"</center></td></tr>   </table>");
        }

但它不适用于多行......所以有什么帮助吗??

【问题讨论】:

  • 移出while&lt;table&gt;和标头声明?
  • 你想要一个 ,然后是一个包含 ,然后是 N 个包含 ,然后是一个
    。只有包含
    的 N 个 应该在 while 循环中。也就是说,你已经用 jsp 标记了你的问题。生成 HTML 的代码应该在 JSP 中,使用 JSTL 并遍历 List&lt;Person&gt;,由 servlet 从结果集中构造。

标签: java html jsp servlets


【解决方案1】:

将 ResultSet 对象转换为 HTML 内容的步骤

(1) 在你的 JAVA 类文件中导入包

(2) 创建类类型“HtmlReportGenerator”的对象

(3) 设置表名为字符串

(4) 将列名设置为逗号分隔的字符串

(5) 以ResultSet对象、表名、列名为参数调用“toHTMLTable()”方法

  Example:

  import frizbee.beach.*;
  //Inside Class file

  HtmlReportGenerator hrp=new HtmlReportGenerator();

  String columnNames="col1,col2,col3,col4,col5,col6,col7,col8,col9"; 

  String tableName="abcde"; 

  String html=hrp.toHTMLTable(rs,tableName,columnNames); 

  System.out.println(html);

@SuppressWarnings("unchecked")
public String toHTMLTable(ResultSet rs,String tableName,String columnNames) throws JSONException, SQLException {

    ResultSetMetaData rsmd = rs.getMetaData();
    int numColumns = rsmd.getColumnCount();

    JSONArray json = new JSONArray();                                               
    while(rs.next()) {
        LinkedHashMap<String, Object> lhm = new LinkedHashMap<String, Object>(); 
        for (int i=1; i<=numColumns; i++) {
            String column_name = rsmd.getColumnLabel(i);
            //String value= rs.getObject(column_name);
            lhm.put(column_name,rs.getObject(column_name));
        }
     json.put(lhm);
    }



    String[] colNames=columnNames.split(",");
    StringBuilder s1=new StringBuilder();
    s1.append("<div style=\"font-size:14pt;font-weight:bold;margin:15pt auto;text-align:center\">"+tableName+"</div>"
            +       " <table style=\"background:white;border-collapse: collapse;text-align:center;margin:10pt auto;border-radius:4px;border:1px solid rgba(255, 30, 0, 0);width:97%\" width=\"97%\" align=\"center\">" + 
            "       <thead style=\"background:#a6a6a6;color:white\">");
    for(int i=0;i<colNames.length;i++) {
        s1.append("<th style=\"padding:10pt 2pt;\">"+colNames[i]+"</th>");
    }
    s1.append("</thead><tbody>");


    for (int i = 0; i < json.length(); i++) {
        s1.append("<tr>");
        JSONObject jsonObj = json.getJSONObject(i);
        Iterator<String> keys = jsonObj.keys();

        while (keys.hasNext()) {

            String key = keys.next();
            String val="";
            if(jsonObj.isNull(key)) {
                val="";
            }

            else {

                val= jsonObj.get(key).toString();
            }
            s1.append("<td style=\"padding:7pt 2pt;border-bottom: 1px solid black !important;"+bgColor(i)+"\">"+val+"</td>");
        }
        s1.append("</tr>");
    }
    s1.append("</tbody></table>");

    return s1.toString();
}


private  String bgColor(int i) {
    return i%2==0?"background-color:#ededed":"";
    }

【讨论】:

    【解决方案2】:

    将最后一行放在循环之外

    【讨论】:

      【解决方案3】:

      这样的事情怎么样?

      writer.println("<table BORDER=1 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>"
                    +"<tr><th>FIRSTNAME</th><th>LASTNAME</th></tr>");
      
      while(result.next()){
        writer.println("<tr><td><center>"+result.getString("firstname")+"</center></td>"
                     + "<td><center>"+result.getString("lastname")+"</center></td></tr>");
      }
      writer.println("</table>");
      

      【讨论】:

      • 对于多行,它在每一行都给了我 FIRSTNAME 和 LASTNAME,这是不合逻辑的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      相关资源
      最近更新 更多