1

我是 jsp 和 javaEE 的新手,并尝试执行以下操作:我进行数据库搜索并找到用户的所有帐户。然后我想列出它们,在 asp.net gridview 中是一个非常有用的工具,我们可以在 gridview 的所有行中添加复选框、按钮等,并为这些行添加特定事件。在java中执行此操作的方法是什么?我应该安装扩展程序吗?这是我的代码:

try {
        connect();
        PreparedStatement checkDB = (PreparedStatement) con.prepareStatement(
        "SELECT * FROM Accounts where username = ?");
        checkDB.setString(1,username);
        ResultSet rs =null;
        rs=(ResultSet) checkDB.executeQuery();

        if(rs.next())
        {

            //LIST THE RESULTS AS A GRIDVIEW HERE
            rs.close();
            return true;
        }
        else
        {
            rs.close();
            System.out.println("awwwwww");
            return false;
        }
    } catch (Exception e) {
        System.out.println("cannot connect");
        e.printStackTrace();
        return false;
    }

这是我想要什么样的东西的截图:

在此处输入图像描述

4

3 回答 3

1

在将要显示的数据保存到会话或请求对象中后,您的 Servlet 可以调度 JSP 以显示结果。

您可以使用标签库displaytag获得类似的外观。例如,下面的代码用于生成http://nciml.mathteamhosting.com/generated/topStudents.htm

    <%-- At top of page --%>
    <%@taglib prefix="display" uri="http://displaytag.sf.net" %>

   <display:table id="row" name="rankedList" >
    <display:column property="rank" title="Rank"  />
    <display:column property="firstName" title="First" />
    <display:column property="lastName" title="Last"  />
    <display:column property="mySchool" title="School" />
    <display:column property="c1" title="C1" />
    <display:column property="c2" title="C2" />
    <display:column property="c3" title="C3" />
    <display:column property="c4" title="C4" />
    <display:column property="c5" title="C5" />
    <display:column property="cTotal" title="Total Points" />
</display:table>

在上面的代码中,rankedList 是一个 RankedStudent 的 ArrayList,它是一个具有列出属性的 POJO。对于要与 displayTag 一起使用的每个属性,您必须具有公共 getter 和 setter。

于 2013-07-02T12:06:37.833 回答
0
    ResultSet rs = null;
    ArrayList aListOfBeans;
    try {
        connect();
        PreparedStatement checkDB = (PreparedStatement) con
                .prepareStatement("SELECT * FROM Accounts where username = ?");
        checkDB.setString(1, username);
        rs = (ResultSet) checkDB.executeQuery();

        while (rs.next()) {
            if (aListOfBeans == null)
                aListOfBeans = new ArrayList();
            // LIST THE RESULTS AS A GRIDVIEW HERE
            String crn = rs.getString("CRN");
            String courseCode = rs.getString("COURSE_CODE");
            // etc etc etc (for all the columns)

            MyAccountBean aBean = new MyAccountBean();
            aBean.setCRN(crn);
            aBean.setCourseCode(courseCode);
            // etc etc etc

            aListOfBeans.add(aBean);
        }

        if (aListOfBeans == null) {
            System.out.println("awwwwww");
        }
    } catch (Exception e) {
        System.out.println("cannot connect");
        e.printStackTrace();
        return false;
    } finally {
        if (rs != null)
            rs.close();
        // closing rs, con, checkDB in finally block *ensures* they get
        // closed even if Exception is caught
        // i didn't write for the others, but you get the idea
    }
    return aListOfBeans;

理想情况下,上述代码应该在您的 Java servlet 中,而不是在您的 JSP 页面中。您的 JSP 应该只显示数据,而不是进行数据库连接或从数据库中获取数据。

稍后在您的 JSP 中,从会话中获取 ArrayList aListOfBeans,并在 bean ( aBean.getCRN()) 上使用 getter 方法来获取数据。在 ArrayList 上使用 for 循环来动态生成表。

于 2013-07-02T12:32:13.720 回答
0

您可以使用 html 的 table 标记来显示您在屏幕截图中给出的结果。

<table> <tr><th>heading</th><th>heading</th><th></th><th></th><th></th><th></th><th></th></tr><tr>

if(rs.next())
    {
          <tr>
                <td>data</td><td></td><td></td><td></td><td></td><td></td><td></td>
          </tr>



    }

rs.close();

于 2013-07-02T12:26:22.027 回答