通用方法接收一个sql语句 返回一个装有LinkedHashMap的ArrayList集合 其中LinkedHashMap的KEY为数据库字段名 VALUE为该字段的值public static ArrayList delRes(String sql) {
ArrayList<LinkedHashMap> list = new ArrayList<LinkedHashMap>();
Connection conn = null;
PreparedStatement stmt = null;
ResultSetMetaData metaData=null;
try {
conn = ConDB.getCon();
stmt = (PreparedStatement) conn.prepareStatement(sql);
ResultSet result = stmt.executeQuery();
metaData=result.getMetaData();
while (result.next()) {
LinkedHashMap v = new LinkedHashMap();
for (int i = 1; i <= metaData.getColumnCount(); i++)
v.put(metaData.getColumnLabel(i),result.getObject(i));
list.add(v);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}在就jsp里生成bean对象 然后用key取出value就好
STRUTS我没用过 我用JSF JSF里有可以自动迭代结果集的标签 STRUTS里也应该有 你查下API就知道了
ArrayList<LinkedHashMap> list = new ArrayList<LinkedHashMap>();
Connection conn = null;
PreparedStatement stmt = null;
ResultSetMetaData metaData=null;
try {
conn = ConDB.getCon();
stmt = (PreparedStatement) conn.prepareStatement(sql);
ResultSet result = stmt.executeQuery();
metaData=result.getMetaData();
while (result.next()) {
LinkedHashMap v = new LinkedHashMap();
for (int i = 1; i <= metaData.getColumnCount(); i++)
v.put(metaData.getColumnLabel(i),result.getObject(i));
list.add(v);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}在就jsp里生成bean对象 然后用key取出value就好
STRUTS我没用过 我用JSF JSF里有可以自动迭代结果集的标签 STRUTS里也应该有 你查下API就知道了
<logic:iterate>
</logic:iterate>谢谢楼上的回答,我不希望JSP页面包含任何JAVA代码!
是否能用STRUTS的标签或其它更好的方法实现?
在你的提示下 我这样写的
package add;import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import java.util.ArrayList;import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import add.DBManager;public class ViewMessageAction extends Action {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest servletRequest,
HttpServletResponse servletResponse)throws Exception {
Connection con = null;
String sql = "select * from messagess";
AddMessageActionForm aaf = new AddMessageActionForm();
con = DBManager.getConnection();
ArrayList list = new ArrayList();
try{
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery(sql);
while(rs.next())
{
aaf.setName(rs.getString(2));
aaf.setSex(rs.getString(3));
aaf.setAge(rs.getString(4));
aaf.setBirthday(rs.getString(5));
aaf.setSchool(rs.getString(6));
aaf.setFinishschool(rs.getString(7));
aaf.setSpecialty(rs.getString(8));
aaf.setInterest(rs.getString(9));
aaf.setJob(rs.getString(10));
aaf.setWorktime(rs.getString(11));
list.add(aaf);
}
servletRequest.setAttribute("aaf",list);
rs.close();
stm.close();
}catch(Exception e)
{
e.printStackTrace();
} return actionMapping.findForward("view");
}
}
<logic:iterate id="aafs" name="aaf" indexId="index" >
<tr>
<td><bean:write name="aafs" property="name"/></td>
<td><bean:write name="aafs" property="sex"/></td>
<td><bean:write name="aafs" property="age"/></td>
<td><bean:write name="aafs" property="birthday"/></td>
<td><bean:write name="aafs" property="school"/></td>
<td><bean:write name="aafs" property="finishschool"/></td>
<td><bean:write name="aafs" property="specialty"/></td>
<td><bean:write name="aafs" property="interest"/></td>
<td><bean:write name="aafs" property="job"/></td>
<td><bean:write name="aafs" property="worktime"/></td>
</tr>
</logic:iterate>