如何在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注入攻击敏感并且正在泄漏资源。 修复它。