Sling Servlet
Servlet是用來擴充伺服器功能的類別,這些伺服器裝載透過要求 — 回應程式設計模型存取的應用程式。 對於這類應用程式,Servlet技術會定義HTTP特定的servlet類別。
所有Servlet都必須實作Servlet介面,該介面定義生命週期方法。
AEM中的servlet可註冊為OSGi服務:您可以將SlingSafeMethodsServlet擴充為唯讀實作或SlingAllMethodsServlet,以實作所有RESTful作業。
Servlet程式碼
package com.mysite.core.servlets;
import javax.servlet.Servlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import java.io.File;
import com.adobe.aemfd.docmanager.Document;
import com.adobe.fd.forms.api.FormsService;
@Component(service={Servlet.class}, property={"sling.servlet.methods=post", "sling.servlet.paths=/bin/mergedataWithAcroform"})
public class MyFirstAEMFormsServlet extends SlingAllMethodsServlet
{
private static final long serialVersionUID = 1L;
@Reference
FormsService formsService;
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response)
{
String file_path = request.getParameter("save_location");
java.io.InputStream pdf_document_is = null;
java.io.InputStream xml_is = null;
javax.servlet.http.Part pdf_document_part = null;
javax.servlet.http.Part xml_data_part = null;
try
{
pdf_document_part = request.getPart("pdf_file");
xml_data_part = request.getPart("xml_data_file");
pdf_document_is = pdf_document_part.getInputStream();
xml_is = xml_data_part.getInputStream();
Document data_merged_document = formsService.importData(new Document(pdf_document_is), new Document(xml_is));
data_merged_document.copyToFile(new File(file_path));
}
catch(Exception e)
{
response.sendError(400,e.getMessage());
}
}
}
建置和部署
若要建置專案,請遵循下列步驟:
- 開啟 命令提示字元視窗
- 瀏覽至
c:\aemformsbundles\mysite\core
- 執行命令
mvn clean install -PautoInstallBundle
- 上述命令會自動建置套件組合,並將其部署至在localhost:4502上執行的AEM執行個體
此組合也可在下列位置C:\AEMFormsBundles\mysite\core\target
使用。 也可以使用Felix Web主控台將套件組合部署到AEM。
測試Servlet解析程式
將瀏覽器指向servlet解析程式URL。 這會告訴您針對指定路徑叫用的servlet,如以下熒幕擷取畫面所示
使用Postman測試servlet
後續步驟
recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e