【问题标题】:Creating html file based on template in java web application在 java Web 应用程序中基于模板创建 html 文件
【发布时间】:2016-08-23 20:39:16
【问题描述】:

我正在创建一个 Web 应用程序,在用户注册后,我想创建一个以该用户名命名的 html 文件(即 joebloggs123 是用户名,因此 html 文件是 joebloggs123.html)。我想使用模板 html 文件,因为它会在创建时涵盖用户的基本配置文件内容。 到目前为止,我有以下内容:

File htmlTemplateFile = new File("/Convocast-war/web/userTemplate.html");
String htmlString = FileUtils.readFileToString(htmlTemplateFile);
String title = username + "'s Profile";
htmlString = htmlString.replace("$title", title);
File newHtmlFile = new File("/userPages/" + username + ".html");
FileUtils.writeStringToFile(newHtmlFile, htmlString);
System.out.println(newHtmlFile);

但是,我在 htmlTemplateFile 路径上收到了 filenotfoundexception。 包括我的目录结构,但无论我使用什么文件路径,它都找不到该文件。 我尝试了许多其他变体,但似乎没有找到该文件。 File Structure

【问题讨论】:

  • 我强烈建议不要使用File类和相关类,而是改用PathFilesFile 类写得不好,没有给出好的异常,有时会混淆权限问题和“找不到文件”。但是,在您的情况下,请记住您必须编写相对于文件系统的路径,而不是应用程序树。 Comvocast-war是直接在/目录下吗?
  • 你说的是java.nio.file.path吗?整个项目 /Convocast 和整个 Web 应用程序是 /Convocast/Convocast-war/。我认为 ../../web/userTemplate.html 将是相对文件路径。我会尝试使用 Path 看看是否能解决问题。

标签: java html web


【解决方案1】:

您可以使用ServletContext.getRealPath() 来定位该文件。

将您的第一行更改为:

File f = new File(getServletContext().getRealPath("/userTemplate.html"));

【讨论】:

  • 这找到了文件,虽然现在它说它正在创建一个 HTML 文件,尽管我找不到它,即使上面的代码让我相信它根本没有创建。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2011-06-18
  • 2023-03-15
  • 2011-02-27
  • 1970-01-01
  • 2012-01-16
相关资源
最近更新 更多