如何在jsp页面中将搜索结果显示为列表?

时间:2013-07-02 11:55:41

标签: java database jsp java-ee gridview

我是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;
    }

以下是我想要的内容的截图:

enter image description here

3 个答案:

答案 0 :(得分: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>

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

答案 1 :(得分:0)

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

<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();

答案 2 :(得分: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循环来动态生成表。