如何在jsp中显示从dao获得的数据
在jsp中
Project ID Project Name Cost Center Manager ${resultList.Projname} ${resultList.Cost} ${resultList.Manager}
在道
public final class SearchProjDAO { private static InitialContext context; String CLASS_NAME="DBConnectionFactory"; public ArrayList submitProjectDetails(SearchProjVO searchprojVO) { ArrayList ar = new ArrayList(); String methodname="createConnection"; Connection conn = null; PreparedStatement psmt; try { System.out.println("in DAO"); System.out.println("searchprojVO id=="+searchprojVO.getProjid()); conn = DBConnection.getJNDIConnection(); ResultSet rs = null; String query="select * from CR_EMPLOYEE_DETAILS";if(searchprojVO.getProjid()!=null || searchprojVO.getProjname()!=null || searchprojVO.getManager()!=null) query=query+" where "; if(searchprojVO.getProjid()!=null) query=query+" PROJ_ID="+searchprojVO.getProjid(); if(searchprojVO.getProjname()!=null) query=query+"PROJ_NAME="+searchprojVO.getProjname(); if(searchprojVO.getCost()!=null); query=query+"PROJ_COST="+searchprojVO.getCost(); if(searchprojVO.getManager()!=null) query=query+"PROJ_MANAGER="+searchprojVO.getManager(); psmt= conn.prepareStatement(query); rs=psmt.executeQuery(); while(rs.next()) { SearchProjVO projVO = new SearchProjVO(); projVO.setProjid(rs.getString("PROJ_ID")); projVO.setManager(rs.getString("PROJ_NAME")); projVO.setProjname(rs.getString("PROJ_COST")); projVO.setManager(rs.getString("PROJ_MANAGER")); ar.add(projVO); } System.out.println("conn==="+conn); } catch (Exception e) { e.printStackTrace(System.err); } return ar; } }
我发现了几个错误:
这里,
您每次都使用列表项的值覆盖列表值。 不要那样做。 为var
赋予唯一的变量名称。 实体名称是最直接的选择。
请注意,我个人也将无所谓的结果resultList
重命名为更自我解释的projects
。
和这里,
流动是错误的。 您应该在每个循环中打印一个新行。 交换它们。
和这里,
${resultList.Projid} ${resultList.Projname} ${resultList.Cost} ${resultList.Manager}
属性名称必须以小写开头(并将项目名称固定为与var
的相同)。
${project.projid} ${project.projname} ${project.cost} ${project.manager}
请注意,我个人也在某些属性名称中删除了proj
前缀。
最后你忘记了结束 。
与具体问题无关,您的JDBC代码对SQL注入攻击敏感并且正在泄漏资源。 修复它。