我在Tomcat下运行的很好的程序,显示的文件夹下的文件列表也是正确的。但是相同的页面部署到jetty下面后,出现了问题:显示列表发生错误,有的显示了两次,而且布局也乱了。当我把<img>标签去掉的时候,列表显示行数又是正确的。可是我现在必须用<img>标签,为的是把当前目录下是图片的文件显示出来。请问这是什么原因造成的,有什么好的解决方法,谢谢了。代码片段如下:<%
  request.setCharacterEncoding("gb2312");   String strDir = request.getParameter("path"); 
  if(strDir==null||strDir.length()<1)
  {
     strDir = "D:\\mywork\\tree\\Web\\tree";      //文件存放默认路径
  }
  StringBuffer sb=new StringBuffer("");
  StringBuffer sbFile=new StringBuffer("");
 
  try {
    
    out.print("<div align='center'>");
    out.println("<table border=1 width='100%' bgcolor='#F1f1f1'><tr><td width='30%'>当前目录: <b>" +strDir+ "</b></td></tr></table><br>");
    File objFile = new File(strDir);
    File list[] = objFile.listFiles(); 
    if(objFile.getAbsolutePath().length()>3) {
    %>
    <a href="?path=<%=objFile.getParentFile().getAbsolutePath()%>">上一级目录</a><p>
    <%
    }
    %>
    <table width="50%" border=1>
    <%
    System.out.println(list.length);
    for(int i=0;i<list.length;i++ ) {
      if(list[i].isDirectory()) {
      %>
      &nbsp;&nbsp;<a href="?path=<%=list[i].getAbsolutePath()%>"><%= list[i].getName()%></a><br>
      <%
      } else {
      
    %>
    <tr>
      <TD><IMG alt="" height="100"  src="<%=list[i].getPath()%>" width="100" border=0></IMG></TD>
      <td><%=list[i].getName() %></td>
    </tr>
    <%
      } 
    }    %>
    </table>
    <%  } catch(Exception e) {
    //out.println("<font color=red>"+ e.toString()+ "</font>");
  }
%>

解决方案 »

  1.   

    问题应该在于table使用不正确.
    当文件是directory的时候,你没有用tr/td来显示一行.
    而当文件是file的时候你用了tr/td来显示一行.尝试一下下面的修改: <%
        System.out.println(list.length);
        for(int i=0;i<list.length;i++ ) {
          if(list[i].isDirectory()) {
          %>
          &nbsp;&nbsp;<a href="?path=<%=list[i].getAbsolutePath()%>"><%= list[i].getName()%></a><br/>
          <%
          } else {
          
        %>
        <tr>
          <TD><IMG alt="" height="100"  src="<%=list[i].getPath()%>" width="100" border=0></IMG></TD>
          <td><%=list[i].getName() %></td>
        </tr>
        <%
          } 
        }    %>
    =>
    <%
        System.out.println(list.length);
        for(int i=0;i<list.length;i++ ) {
          if(list[i].isDirectory()) {
          %>
        <tr>
          <td colspan="2">&nbsp;&nbsp;<a href="?path=<%=list[i].getAbsolutePath()%>"><%= list[i].getName()%></a></td>
        </tr>      <%
          } else {
          
        %>
        <tr>
          <TD><IMG alt="" height="100"  src="<%=list[i].getPath()%>" width="100" border=0></IMG></TD>
          <td><%=list[i].getName() %></td>
        </tr>
        <%
          } 
        }    %>