約 1 分鐘閱讀

Read in English →

在Adobe Experience Manager中註冊Sling Servlets

在Adobe Experience Manager (AEM) 中,Sling servlet可以被用來處理某些RESTful的請求-回應的AJAX調用。寫在Java編程語言中的Servlets可以被註冊為OSGi(開放服務網關協議)服務。在AEM中註冊servlet有兩種方法:1) 通過路徑,和 2) 通過資源類型。以下是兩種方法的詳細說明:

在Adobe Experience Manager (AEM) 中,Sling servlet可以被用來處理某些RESTful的請求-回應的AJAX調用。寫在Java編程語言中的Servlets可以被註冊為OSGi(開放服務網關協議)服務。在AEM中註冊servlet有兩種方法:1) 通過路徑,和 2) 通過資源類型。以下是兩種方法的詳細說明:

1. 通過路徑註冊

例如,如果您希望從客戶端發送一個表單POST請求到路徑/bin/payment 到Sling servlet類,您可以使用以下的註解:

@SlingServlet(
    metatype = true,
    methods = { "POST" },
    paths = "/bin/payment"
)
public class YourServlet extends SlingSafeMethodsServlet {

    @Override
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException {
        // 在這裡執行你的任務
    }
}

當有一個POST請求到 http://localhost:4502/bin/payment 時,servlet將被觸發,並調用 doPost 方法。

前提條件包括在端口4502上運行本地AEM實例,並通過Maven Bundle插件安裝bundle模組。您可以通過導航到 http://localhost:4502/system/console/bundles來驗證bundle的安裝。如果沒有安裝,您可以手動上傳JAR文件。

如果您遭遇“禁止”的錯誤,無法服務 /bin/payment 的請求,請按照以下步驟操作:

  1. 轉到 http://localhost:4502/system/console/configMgr。
  2. 搜索 ‘Apache Sling Referrer Filter’。
  3. 從篩選器中刪除POST方法。這將允許您從任何來源觸發POST方法。
  4. 搜索Adobe Granite CSRF Filter。
  5. 從篩選方法中刪除POST。
  6. 保存更改並再次測試servlet。

Servlet現在應該按預期觸發。

2. 通過資源類型註冊

為了避免上述問題,更好的方法是通過資源類型註冊servlet。重構servlet如下:

@SlingServlet(
    metatype = true,
    methods = { "POST" },
    resourceTypes = "services/payment"
)
public class YourServlet extends SlingSafeMethodsServlet {

    @Override
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException {
        // 在這裡執行你的任務
    }
}

接下來,您需要創建一個頁面來觸發此資源:

  1. 轉到 http://localhost:4502/crx/de/index.jsp的CRXDE Lite。
  2. 在/content資料夾內,創建一個頁面(例如,http://localhost:4502/content/submitPage.html)。
  3. 在resourceType屬性中,輸入 services/payment 或其他匹配您上述的servlet。
  4. 保存更改並測試POST請求到 http://localhost:4502/content/submitPage.html。 應該可以按预期工作。

額外提示: 您也可以使用Apache Sling Resource Resolver來驗證servlet是否已成功註冊在http://localhost:4502/system/console/jcrresolver。

如果有任何問題,可以在下面的評論中留言。

繼續探索這個主題

  • 使用Java Spring框架的蘋果推送通知

    我正在實現一個使用Java Spring Framework伺服器,使用Swift向iPhone發送Apple推送通知。以下是你將需要的東西:

  • 新興市場的企業管治

    對全球投資者與企業擁有人而言,企業管治早已不再只是合規或附屬議題,而是資本配置、風險管理與長期價值創造的核心。中國、巴西與南韓提供了三種截然不同、卻同樣具啟發性的企業管治發展路徑。這些路徑深受歷史、所有權結構與監管選擇所塑造,放在一起觀察,有助我們理解企業管治如何演進、其內在張力何在,以及投資者與控股家族可汲取的實務經驗。

  • 溝通如何塑造全球資產管理中的信任與治理

    企業治理很少是在戲劇化的董事會瞬間中被決定的。它往往是在更安靜、更持續的層面上被塑造——體現在董事收到的資訊品質、決策被呈現與討論的紀律,以及組織與其股東、監管機構、客戶和員工溝通的一致性之中。董事會有效性的「六個 C」——能力、投入、貢獻、質疑、協作與文化——並非抽象的理想,而是最清楚地反映在溝通之中,因為溝通揭示了董事會選擇透明化的內容、選擇加以管…

返回文章列表