如何在同一页面中使用JSTL或JSP标准操作创建和使用ArrayList

时间:2016-01-08 13:15:13

标签: java jsp jstl

我有一个scriplet代码连接到数据库,获取记录,存储在arraylist中并迭代该arraylist以获取记录。

以下是连接和获取arraylist

记录的代码
<%
    String connectionURL = "jdbc:mysql://localhost:3306/stc";
    ArrayList<String> productname = new ArrayList<String>();
    ArrayList<String> productmodel = new ArrayList<String>();
    Connection connection = null;
    ResultSet rs = null;
    try
    {
        // Load the database driver
        Class.forName("com.mysql.jdbc.Driver");
        // Get a Connection to the database
        connection = DriverManager.getConnection(connectionURL, "root", "");
        //Add the data into the database
        PreparedStatement pst = connection.prepareStatement("SELECT * FROM tbl_products");
        rs= pst.executeQuery();
        while(rs.next())
        {
            productname.add(rs.getString("txtProduct_Name"));
            productmodel.add(rs.getString("txtModel_No"));

        }

    }
    catch(Exception e){
        e.printStackTrace();
    }
    finally{
        if(connection != null){
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    %>

以下代码通过arraylist进行迭代以显示记录

<select name="productname" id="productname">
            <option>Select Name</option>
            <%
                        for(int i=0;i<productname.size();i++)
                        {
                        %>
                        <option value="<%=productname.get(i) %>"><%=productname.get(i) %></option>
                        <%
                        }
            %>
            </select>

我想通过使用JSTL或JSP标准操作来实现所有这些功能。 请帮忙

2 个答案:

答案 0 :(得分:0)

您可以使用Assembly.GetExecutingAssembly().Location中的foreach来迭代ArrayList jstl,如下所示:

productname

与ither ArrayList <c:forEach var='parameter' items='${productname}'> <c:out value="${parameter.name}" /> ... </c:forEach><br> 相同。

答案 1 :(得分:0)

可以重新考虑上面的代码以使用JSTL。在这种情况下可能需要的JSTL将是Core,SQL标记。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

对于第一个代码片段,使用sql:setDataSource,sql:query标签连接到DB并执行查询。

 <sql:setDataSource var="demoDB" driver="com.mysql.jdbc.Driver"
         url="jdbc:mysql://localhost/demo"
         user=""  
         password=""/>

<sql:query dataSource="${demoDB}" sql=" " var="queryResult" />
  • sql属性将包含您的查询。

使用对象queryResult上的c:forEach标记迭代列表。

请参阅主题:Java ArrayList using in JSTL(<c:foreach>)