Java JSP使用数据库路径列出文件夹中的所有文件

Java JSP使用数据库路径列出文件夹中的所有文件,java,postgresql,jsp,Java,Postgresql,Jsp,我在数据库中直接保存文件的路径,因为我最多上载一个文件。 现在一个人最多可以添加5个文件,因此我根据他们的姓名、姓氏和电话号码为他们创建了唯一的文件夹 在我的搜索JSP页面中,我得到如下内容: <c:if test="${Person.zalacznik != null}"> <td> <a href="file:///${Person.zalacznik}"><img src="cv_ico

我在数据库中直接保存文件的路径,因为我最多上载一个文件。 现在一个人最多可以添加5个文件,因此我根据他们的
姓名
姓氏
电话号码
为他们创建了唯一的文件夹

在我的搜索JSP页面中,我得到如下内容:

<c:if test="${Person.zalacznik != null}">                 
     <td>
         <a href="file:///${Person.zalacznik}"><img src="cv_icon.png" alt="CV" height="42" width="42"></a>              
     </td>
 </c:if>
创建的文件列表来自:

<a href="file:///${Person.zalacznik}/filename"><img src="cv_icon.png" alt="CV" height="42" width="42"></a>  <a href="file:///${Person.zalacznik}/filename2"><img src="cv_icon.png" alt="CV" height="42" width="42"></a> 

如何做到这一点?

创建一个自定义EL(表达式)语言函数,以便可以对其进行迭代。 您可以先试用一些示例代码

然后,JSP将如下所示:

<%@taglib prefix="f" uri="http://www.myurl/mytaglib.tld" %>
<c:forEach var="i" items="${f:listFiles(Person.zalacznik)}">
     <a href="${i.location}"><img src="${i.icon}" alt="$[i.alt}"
     height="42" width="42"></a>              
</c:forEach>
在/WEB-INF/tags目录中创建标记库描述符mytaglib.tld:

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
  version="2.1"> 

  <tlib-version>1.0</tlib-version>
  <uri>http://www.myurl/mytaglib.tld</uri>
  <function>
      <name>listFiles</name>
      <function-class>my.el.Functions</function-class>
      <function-signature>
          my.el.Functions.FileInfo[] listFiles(java.lang.String)
      </function-signature>
  </function>  
</taglib> 

1
http://www.myurl/mytaglib.tld
列表文件
my.el.函数
my.el.Functions.FileInfo[]列表文件(java.lang.String)
在web.xml中,我们准备了EL函数的URL以供直接使用


http://www.myurl/mytaglib.tld
/WEB-INF/tags/mytaglib.tld

文件名在哪里?如果
Person.zalacznik
只包含一个文件夹的名称,您将循环什么?让JSP浏览文件夹听起来像是一种安全风险,您需要后退一步,从后端开始:您需要存储路径集合,然后在JSP中循环该集合,而不是存储一个文件的一条路径。
package my.el;
public class Functions {
   public static class FileInfo {
        private final String location;
        public FileInfo(String location) { this.location = location; }
        public String getLocation() { return name; }
        public String getIcon() { return "icon.png"; }
        public String getAlt() { return "CV"; }
   }
   public static FileInfo[] listFiles(String directoryName) {
       Path path = Paths.get(directoryName);
       ...
   }
}
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" 
  version="2.1"> 

  <tlib-version>1.0</tlib-version>
  <uri>http://www.myurl/mytaglib.tld</uri>
  <function>
      <name>listFiles</name>
      <function-class>my.el.Functions</function-class>
      <function-signature>
          my.el.Functions.FileInfo[] listFiles(java.lang.String)
      </function-signature>
  </function>  
</taglib> 
<web-app 
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

  <jsp-config>
    <taglib>
      <taglib-uri>http://www.myurl/mytaglib.tld</taglib-uri>
      <taglib-location>/WEB-INF/tags/mytaglib.tld</taglib-location>
    </taglib> 
  </jsp-config>
</web-app>