我有一个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标准操作来实现所有这些功能。 请帮忙
答案 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" />
使用对象queryResult上的c:forEach
标记迭代列表。