代码之家  ›  专栏  ›  技术社区  ›  Redwood

如何创建要下载的HTML文件表?

  •  0
  • Redwood  · 技术社区  · 16 年前

    我负责为嵌入式设备(复印机)更新现有的Java应用程序。

    我要做的一件事是创建一个servlet,它允许在设备上下载沙盒目录中的所有文件(包括应用程序日志文件、本地缓存等)。目前,这些文件都在一个没有子目录的目录中。

    基本上我想做的是:

    • 日志记录
    • 日志日志1
    • 日志2
    • somelocalcache.txt文件
    • 其他本地缓存.txt

    其中每一行都是可点击的链接,允许下载文件。

    然而,我的HTML经验基本上是零,我对Java API的熟悉仍然相当粗糙,所以我正在寻找一些正确的方法来指导它。

    我已经通读了所有提供的样品,下面是我的想法。

    我可以在设备上的指定URL处创建一个servlet,它将调用我的代码。让我们称之为 /MyApp .

    我在下面添加了另一个链接,我们称之为 /MyApp/Download .

    当这个地址在浏览器中到达时,它会显示文件列表。

    必须动态创建此列表。我可以创建一个HTML模板文件并将其放在res文件夹中(这似乎是有关设备的推荐方法),但在运行时需要替换整个文件/链接列表。 Here's 我发现使用 <ol> + <li> 列表和的标记 <a> 链接的标记。我可以很容易地在运行中生成它。这是合理的方式吗?

    例如

    <ol>
      <li>
        <a href=".../MyApp/Download/Log.log">Log.log</a>
      </li>
      <!--more <li> elements-->
    </ol>
    

    单击单个文件将链接到 /MyApp/Download/File.ext 然后通过我的servlet触发文件下载(我发现 this 实际下载的代码)。

    在允许用户访问 /MyAPP 链接或任何子链接,我还可以在允许文件下载之前要求登录用户是管理员,在这种情况下,这似乎是足够的安全性(这些文件不需要很高的安全性)。

    那么,我是错过了什么大的事情,还是这是一个合理的订婚计划?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    编辑

    从这个环节判断 when to use UL or OL in html? 许多人将在下面讨论答案和评论,因为他们说将语义信息放入HTML很重要。

    我的观点很简单——唯一的区别是浏览器会显示一个带有项目符号的点(就像op想要的那样),一个带有数字的点(就像op不想要的那样)。我建议他将HTML改为他想要的呈现方式,或者保持原样,并进行一些CSS更改。

    是的,这两者在语义上有区别…它们仍将按此处定义的顺序呈现 http://www.w3.org/TR/html401/struct/lists.html HTML是放置语义信息的地方吗?我不认为,生成HTML的代码是正确的位置。你的凝聚力可能会有所不同。

    我不会为了历史而改变我原来的评论。

    结束编辑

    不过,我觉得没问题 <ol> 不再使用了,我会和你一起去的 <ul> . 别担心,它还是按您的期望订购的。

    原因是这两者之间的唯一区别是浏览器会自动对排序列表进行编号(使用之前的数字进行渲染)。但是,有了CSS,所有渲染控件都可以在CSS中(包括编号),每个人都很高兴。

    几乎没有人再使用自动号码了。事实上,通过CSS,列表可以并且可以用于各种疯狂的事情,包括CSS菜单系统。

        2
  •  0
  •   BalusC    16 年前

    下面是您需要做的总结:

    1. 你可以用 File#listFiles() 得到一个 File[] .
    2. 你可以使用 JSTL c:forEach 迭代数组。
    3. 您可以使用HTML <ol> , <ul> <dl> 元素以显示列表。
    4. 您可以使用HTML <a> 元素以显示链接。
    5. 你可以使用 Servlet 写一篇文章 InputStream 本地文件的 OutputStream 响应。记得至少通过 Content-Type , Content-Length Content-Disposition 沿着。
    6. 您可以使用请求路径信息安全地传递文件标识符。例如,地图servlet开启 /files/* 让链接指向 http://example.com/files/path/to/file.ext 在servlet中你可以得到 /path/to/file.ext 通过 request.getPathInfo() .

    这里可以找到一个基本的、可靠的servlet示例: FileServlet . 如果您想添加恢复和压缩功能,那么您可能会发现 FileServlet 更有用。

    也就是说,默认情况下,大多数应用服务器也只支持目录列表。例如,Tomcat默认支持它。你可以定义另一个 <Context> 在Tomcat server.xml 用一个 docBase 属于 C:/path/to/all/files 和上下文路径 /files (以便 http://example.com/files .

    <Context docBase="/path/to/all/files" path="/files" />
    

    基本上就是这样。不需要本地代码/html/servlet。