Class StaticSiteHelper

java.lang.Object
io.leandev.appfuse.docs.StaticSiteHelper

public class StaticSiteHelper extends Object

Docusaurus 靜態網站工具類

提供靜態網站托管所需的各種 utility 方法。

功能特性

  • BaseUrl 替換:將建置時的路徑替換為部署時的實際路徑
  • URL 替換:將建置時的域名替換為部署時的實際域名
  • 自動偵測:若未設定 URL,可從請求中自動偵測

使用範例

// 在 Controller 中使用
@Controller
public class StaticSiteController {
    @Value("${docs.source-baseUrl}")
    private String sourceBaseUrl;

    @Value("${docs.basename}")
    private String basename;

    @GetMapping("/**")
    public ResponseEntity<String> handleRequest(HttpServletRequest request) {
        String html = readHtmlFile(...);

        // 執行路徑替換
        html = StaticSiteHelper.processHtml(
            html, sourceBaseUrl, basename,
            sourceUrl, siteUrl, basename, request
        );

        return ResponseEntity.ok(html);
    }
}
See Also:
  • Constructor Details

    • StaticSiteHelper

      public StaticSiteHelper()
  • Method Details

    • processHtml

      public static String processHtml(String html, String sourceBaseUrl, String targetBasename, String sourceUrl, String siteUrl, String basename, jakarta.servlet.http.HttpServletRequest request)

      處理 HTML 內容

      執行 baseUrl 和 URL 替換。

      Parameters:
      html - HTML 內容
      sourceBaseUrl - 原始 baseUrl(建置時使用,對應 Docusaurus 的 baseUrl)
      targetBasename - 目標路徑(部署時使用,等同於 Spring server.servlet.context-path)
      sourceUrl - 原始完整 URL(建置時使用,對應 Docusaurus 的 url,可為 null)
      siteUrl - 部署網域(protocol + domain,可選包含專案前綴 path;若為 null 則從 request 自動偵測)
      basename - 部署路徑(與 targetBasename 相同,用於組合完整 URL)
      request - HTTP 請求(用於自動偵測 URL)
      Returns:
      處理後的 HTML
    • processSitemap

      public static String processSitemap(String sitemap, String sourceUrl, String siteUrl, String basename, jakarta.servlet.http.HttpServletRequest request)
      處理 sitemap.xml 內容
      Parameters:
      sitemap - sitemap.xml 內容
      sourceUrl - 原始完整 URL(建置時使用)
      siteUrl - 部署網域(protocol + domain,可選包含專案前綴 path;若為 null 則從 request 自動偵測)
      basename - 部署路徑(用於組合完整 URL)
      request - HTTP 請求
      Returns:
      處理後的 sitemap
    • buildTargetUrl

      public static String buildTargetUrl(String siteUrl, String basename, jakarta.servlet.http.HttpServletRequest request)

      建構目標 URL

      優先使用配置的 siteUrl,若未設定則從請求中自動偵測。

      Parameters:
      siteUrl - 站台部署網域(可為 null,支援含可選專案前綴 path)
      basename - 部署路徑
      request - HTTP 請求
      Returns:
      完整的目標 URL
    • buildUrlFromRequest

      public static String buildUrlFromRequest(jakarta.servlet.http.HttpServletRequest request)

      從 HTTP 請求中建構 URL

      自動偵測 scheme、domain、port 和 context path。

      Parameters:
      request - HTTP 請求
      Returns:
      完整 URL
    • resolveFilePath

      public static String resolveFilePath(String servletPath)

      解析路徑為實際檔案路徑

      處理目錄請求、無副檔名請求等。

      Parameters:
      servletPath - Servlet 路徑
      Returns:
      實際檔案路徑
    • isHtml

      public static boolean isHtml(String path)
      判斷是否為 HTML 檔案
      Parameters:
      path - 檔案路徑
      Returns:
      是否為 HTML
    • isSitemap

      public static boolean isSitemap(String path)
      判斷是否為 Sitemap
      Parameters:
      path - 檔案路徑
      Returns:
      是否為 sitemap.xml