Sling 서블릿

서블릿은 요청 응답 프로그래밍 모델을 통해 액세스되는 응용 프로그램을 호스팅하는 서버의 기능을 확장하는 데 사용되는 클래스입니다. 이러한 응용 프로그램의 경우 Servlet 기술은 HTTP별 서블릿 클래스를 정의합니다.
모든 서블릿은 라이프 사이클 방법을 정의하는 서블릿 인터페이스를 구현해야 합니다.

AEM의 서블릿은 OSGi 서비스로 등록할 수 있습니다. 모든 RESTful 작업을 구현하기 위해 읽기 전용 구현용 SlingSafeMethodsServlet 또는 SlingAllMethodsServlet을 확장할 수 있습니다.

서블릿 코드

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 웹 콘솔을 사용하여 AEM에 번들을 배포할 수도 있습니다.

Servlet Resolver 테스트

브라우저를 servlet resolver URL로 지정합니다. 아래 스크린샷에 표시된 대로 주어진 경로에 대해 호출되는 서블릿을 알려줍니다
servlet-resolver

Postman을 사용하여 서블릿 테스트

Postman을 사용하여 서블릿을 테스트합니다

다음 단계

타사 jar 포함

recommendation-more-help
8de24117-1378-413c-a581-01e660b7163e