Apache Tapestry-고급 기능

이 장에서는 Apache Tapestry의 몇 가지 고급 기능에 대해 자세히 설명합니다.

제어 반전

Tapestry는 내장 Inversion of Control 라이브러리를 제공합니다. Tapestry는 IoC에 깊이 통합되어 있으며 모든 기능에 IoC를 사용합니다. Tapestry IoC 구성은 다른 많은 IoC 컨테이너와 마찬가지로 XML 대신 Java 자체를 기반으로합니다. Tapestry IoC 기반 모듈은 JAR 파일로 패키징되고 구성이 전혀없는 클래스 경로에 드롭됩니다. 태피스트리 IoC 사용은 가벼움을 기반으로합니다.

  • 두세 가지 방법의 작은 인터페이스.

  • 2 개 또는 3 개의 매개 변수가있는 작은 방법.

  • 명시적인 메서드 호출이 아닌 이벤트를 통한 익명 통신.

모듈

모듈은 Tapestry 애플리케이션의 기능을 확장하는 방법입니다. Tapestry에는 내장 모듈과 다수의 타사 모듈이 모두 있습니다. Hibernate는 Tapestry에서 제공하는 뜨겁고 매우 유용한 모듈 중 하나입니다. 또한 JMX, JPA, Spring Framework, JSR 303 Bean Validation, JSON 등을 통합하는 모듈이 있습니다. 주목할만한 타사 모듈 중 일부는 다음과 같습니다.

  • Tapestry-Cayenne
  • Tapestry5-googleanalytics
  • 태피스트리 5의 갱-Tapestry5-HighCharts
  • 태피스트리 5의 갱-Tapestry5-jqPlot
  • 태피스트리 5의 갱-Tapestry5-Jquery
  • 태피스트리 5의 갱-Tapestry5-Jquery-mobile
  • 태피스트리 5 갱-Tapestry5-Portlet

런타임 예외

태피스트리의 가장 큰 특징 중 하나는 Detailed Error Reporting. Tapestry는 최첨단 예외보고 기능을 제공하여 개발자를 돕습니다. 태피스트리 예외 보고서는 자세한 정보가 포함 된 간단한 HTML입니다. 누구나 쉽게 보고서를 이해할 수 있습니다. Tapestry는 HTML로 오류를 표시하고 예외가 발생한 날짜 및 시간과 함께 예외를 일반 텍스트로 저장합니다. 이것은 개발자가 프로덕션 환경에서도 예외를 확인하는 데 도움이됩니다. 개발자는 잘못된 템플릿, 예상치 못한 null 값, 일치하지 않는 요청 등과 같은 문제를 해결할 수 있습니다.

라이브 클래스 및 템플릿 다시로드

Tapestry는 수정되면 템플릿과 클래스를 자동으로 다시로드합니다. 이 기능을 사용하면 빌드 및 테스트주기를 거치지 않고도 애플리케이션 변경 사항을 즉시 반영 할 수 있습니다. 또한이 기능은 애플리케이션 개발의 생산성을 크게 향상시킵니다.

응용 프로그램의 루트 패키지가 org.example.myfirstapp. 그런 다음 다음 경로의 클래스를 스캔하여 다시로드합니다.

  • org.example.myfirstapp.pages
  • org.example.myfirstapp.components
  • org.example.myfirstapp.mixins
  • org.example.myfirstapp.base
  • org.example.myfirstapp.services

프로덕션 모드를 다음으로 설정하여 라이브 클래스 다시로드를 비활성화 할 수 있습니다. trueAppModule.java.

configuration.add(SymbolicConstants.PRODUCTION_MODE,”false”);

단위 테스트

단위 테스트는 개별 페이지와 구성 요소를 테스트하는 기술입니다. Tapestry는 단위 테스트 페이지 및 구성 요소에 대한 쉬운 옵션을 제공합니다.

페이지 단위 테스트 : Tapestry는 클래스를 제공합니다. PageTester응용 프로그램을 테스트합니다. 이것은 브라우저 및 서블릿 컨테이너 역할을합니다. 서버 측 자체에서 브라우저없이 페이지를 렌더링하고 결과 문서에서 올바른 렌더링을 확인할 수 있습니다. 간단한 페이지 고려Hello, hello를 렌더링하고 hello 텍스트는 id가있는 html 요소 안에 포함됩니다. hello_id. 이 기능을 테스트하기 위해 다음과 같이 PageTester를 사용할 수 있습니다.

public class PageTest extends Assert { 
   @Test 
   public void test1() { 
      Sring appPackage = "org.example.myfirstapp"; // package name 
      String appName = "App1"; // app name 
      PageTester tester = new PageTester(appPackage, appName, "src/main/webapp"); 
      Document doc = tester.renderPage("Hello"); 
      assertEquals(doc.getElementById("hello_id").getChildText(), "hello"); 
   } 
}

PageTester는 페이지 렌더링 외에도 컨텍스트 정보, 양식 제출, 링크 탐색 등을 포함하는 옵션도 제공합니다.

통합 테스트

통합 테스트는 단위 테스트에서와 같이 개별 페이지를 확인하는 대신 응용 프로그램을 모듈로 테스트하는 데 도움이됩니다. 통합 테스트에서는 여러 모듈을 하나의 단위로 함께 테스트 할 수 있습니다. Tapestry는Tapestry Test Utilities통합 테스트를 수행합니다. 이 라이브러리는 Selenium 테스트 도구와 통합되어 테스트를 수행합니다. 라이브러리는 기본 클래스를 제공합니다.SeleniumTestCase, Selenium 서버, Selenium 클라이언트 및 Jetty 인스턴스를 시작하고 관리합니다.

통합 테스트의 예 중 하나는 다음과 같습니다.

import org.apache.tapestry5.test.SeleniumTestCase; 
import org.testng.annotations.Test;  

public class IntegrationTest extends SeleniumTestCase { 
   @Test 
   public void persist_entities() {  
      open("/persistitem"); 
      assertEquals(getText("//span[@id='name']").length(), 0); 
      clickAndWait("link = create item"); 
      assertText("//span[@id = 'name']", "name"); 
   } 
}

개발 대시 보드

개발 대시 보드는 애플리케이션의 문제를 식별 / 해결하는 데 사용되는 기본 페이지입니다. 대시 보드는 URL로 액세스합니다.http://localhost:8080/myfirstapp/core/t5dashboard. 대시 보드에는 애플리케이션에서 사용 가능한 모든 페이지, 서비스 및 구성 요소 라이브러리가 표시됩니다.

응답 압축

Tapestry는 다음을 사용하여 응답을 자동으로 압축합니다. GZIP compression클라이언트로 스트리밍합니다. 이 기능은 네트워크 트래픽을 줄이고 페이지를 더 빠르게 전달하는 데 도움이됩니다. 압축은 기호를 사용하여 구성 할 수 있습니다.tapestry.min-gzip-sizeAppModule.java에서. 기본값은 100 바이트입니다. Tapestry는 응답 크기가 100 바이트를 넘으면 응답을 압축합니다.

보안

Tapestry는 웹 애플리케이션의 알려진 보안 취약성으로부터 애플리케이션을 보호하기위한 많은 옵션을 제공합니다. 이러한 옵션 중 일부는 다음과 같습니다.

  • HTTPS − 태피스트리 페이지는 다음과 같이 주석을 달 수 있습니다. @Secure 보안 페이지를 만들고 https protocol 뿐.

  • Page access control − 특정 사용자 만 접근 할 수있는 페이지 제어.

  • White-Listed Page − 태피스트리 페이지는 @WhitelistAccessOnly 을 통해서만 액세스 할 수 있도록 localhost.

  • Asset Security− 태피스트리에서는 특정 유형의 파일 만 액세스 할 수 있습니다. 다른 사람은MD5 hash 파일이 제공됩니다.

  • Serialized Object Date − Tapestry는 HMAC를 직렬화 된 Java 객체 데이터에 통합하고 메시지 변조를 방지하기 위해이를 클라이언트로 보냅니다.

  • Cross Site Request Forgery- 태피스트리는 3 제공 RD 어떤 CSRF 공격을 방지하기 위해 파티 모듈이라고 태피스트리 - CSRF 보호를.

  • Security Framework integration− Tapestry는 단일 인증 / 권한 구현으로 잠기지 않습니다. Tapestry는 널리 사용되는 모든 인증 프레임 워크와 통합 될 수 있습니다.

벌채 반출

Tapestry는 응용 프로그램이 실행될 때 자동으로 기록되는 로깅에 대한 광범위한 지원을 제공합니다. Tapestry는 사실상 Java 로깅 라이브러리를 사용합니다.SLF4J. 주석@Log모든 구성 요소 메서드에서 메서드의 시작 및 종료와 가능한 예외를 내보낼 수 있습니다. 또한 Tapestry에서 제공하는 로거 개체는 다음을 사용하여 모든 구성 요소에 삽입 할 수 있습니다.@Inject 아래에 표시된 주석-

public class MyPage { 
   @Inject 
   private Logger logger; 
   
   // . . . 
    
   void onSuccessFromForm() { 
      logger.info("Changes saved successfully"); 
   } 
     
   @Log 
   void onValidateFromForm() { 
      // logic 
   } 
}

마지막으로 Apache Tapestry는 간결하고 확장 가능하며 유지 관리가 가능하고 견고하며 Ajax 지원 애플리케이션을 구축하는 최상의 방법을 제공한다고 말할 수 있습니다. Tapestry는 타사 Java 애플리케이션과 통합 할 수 있습니다. 매우 쉽고 빠르기 때문에 대규모 웹 응용 프로그램을 만드는데도 도움이 될 수 있습니다.