Apache Tapestry - Gelişmiş Özellikler

Bu bölümde, Apache Tapestry'nin birkaç gelişmiş özelliğini ayrıntılı olarak tartışacağız.

Kontrolün Tersine Çevrilmesi

Tapestry, yerleşik Kontrolün Tersine Çevrilmesi kitaplığı sağlar. Tapestry, IoC'ye derinlemesine entegre edilmiştir ve tüm özellikleri için IoC'yi kullanır. Tapestry IoC yapılandırması, diğer birçok IoC kapsayıcısı gibi XML yerine Java'nın kendisine dayanır. Goblen IoC tabanlı modüller JAR dosyasına paketlenir ve sıfır konfigürasyonla sınıf yoluna bırakılır. Goblen IoC kullanımı hafifliğe dayanır, bu şu anlama gelir -

  • İki veya üç yöntemin küçük arayüzleri.

  • İki veya üç parametresi olan küçük yöntemler.

  • Açık yöntem çağrıları yerine olaylar aracılığıyla anonim iletişim.

Modüller

Modül, Tapestry uygulamasının işlevselliğini genişletmenin bir yoludur. Tapestry, hem yerleşik modüllere hem de çok sayıda üçüncü taraf modülüne sahiptir. Hazırda bekletme, Tapestry tarafından sağlanan sıcak ve çok kullanışlı modüllerden biridir. Ayrıca, JMX, JPA, Spring Framework, JSR 303 Bean Validation, JSON, vb. Entegre eden modüller de vardır. Önemli üçüncü taraf modüllerinden bazıları -

  • Tapestry-Cayenne
  • Tapestry5-googleanalytics
  • Goblen Çetesi 5 - Tapestry5-HighCharts
  • Goblen 5 Çetesi - Tapestry5-jqPlot
  • Goblen 5 Çetesi - Tapestry5-Jquery
  • Goblen 5 Çetesi - Tapestry5-Jquery-mobile
  • Goblen 5 Çetesi - Tapestry5-Portlet

Çalışma Zamanı İstisnaları

Goblenin en iyi özelliklerinden biri de Detailed Error Reporting. Tapestry, son teknoloji istisna raporlaması sağlayarak bir geliştiriciye yardımcı olur. Goblen istisna raporu, ayrıntılı bilgiler içeren basit bir HTML'dir. Raporu herkes kolayca anlayabilir. Tapestry, hatayı HTML'de gösterir ve istisnayı, istisnanın meydana geldiği tarih ve saatle birlikte düz bir metin olarak kaydeder. Bu, geliştiricinin üretim ortamındaki istisnayı da kontrol etmesine yardımcı olacaktır. Geliştirici, bozuk şablonlar, beklenmeyen boş değerler, eşleşmeyen istek vb. Gibi sorunları çözme konusunda emin olabilir.

Canlı Sınıf ve Şablon Yeniden Yükleme

Tapestry, değiştirildiğinde şablonları ve sınıfları otomatik olarak yeniden yükleyecektir. Bu özellik, uygulama değişikliklerinin derleme ve test döngüsünden geçmeden anında yansıtılmasını sağlar. Ayrıca bu özellik, uygulama geliştirmenin üretkenliğini büyük ölçüde artırır.

Uygulamanın kök paketinin şu şekilde olduğunu düşünün: org.example.myfirstapp. Ardından, aşağıdaki yollardaki sınıflar yeniden yüklenmek üzere taranır.

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

Canlı sınıf yeniden yükleme, üretim modunu şu şekilde ayarlayarak devre dışı bırakılabilir: true içinde AppModule.java.

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

Birim Testi

Birim testi, tek tek sayfaların ve bileşenlerin test edildiği bir tekniktir. Tapestry, test sayfalarını ve bileşenleri birimlemek için kolay seçenekler sunar.

Bir sayfayı test eden ünite: Tapestry bir sınıf sağlar PageTesteruygulamayı test etmek için. Bu, hem tarayıcı hem de servlet kapsayıcı görevi görür. Sayfayı sunucu tarafında tarayıcı olmadan oluşturur ve elde edilen belge doğru işleme için kontrol edilebilir. Basit bir sayfa düşününHello, merhaba ve merhaba metni, id ile bir html öğesinin içine alınır hello_id. Bu özelliği test etmek için, PageTester'ı aşağıda gösterildiği gibi kullanabiliriz -

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 ayrıca sayfayı oluşturmaya ek olarak bağlam bilgisi, form gönderme, bağlantı gezintisi vb. Ekleme seçeneği de sunar.

Entegre Test

Entegre test, birim testinde olduğu gibi tek tek sayfaları kontrol etmek yerine uygulamanın bir modül olarak test edilmesine yardımcı olur. Entegre testte, birden fazla modül bir birim olarak birlikte test edilebilir. Tapestry adlı küçük bir kitaplık sağlarTapestry Test Utilitiesentegre test yapmak. Bu kütüphane, testi gerçekleştirmek için Selenium test aracıyla entegre olur. Kitaplık bir temel sınıf sağlarSeleniumTestCase, Selenium sunucusunu, Selenium istemcisini ve Jetty Örneğini başlatan ve yöneten.

Entegre test örneklerinden biri aşağıdaki gibidir -

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"); 
   } 
}

Geliştirme Gösterge Tablosu

Geliştirme panosu, uygulamanızdaki sorunları tanımlamak / çözmek için kullanılan varsayılan sayfadır. Gösterge Tablosuna URL ile erişilirhttp://localhost:8080/myfirstapp/core/t5dashboard. Kontrol paneli, uygulamada bulunan tüm sayfaları, hizmetleri ve bileşen kitaplıklarını gösterir.

Tepki Sıkıştırma

Goblen, kullanarak yanıtı otomatik olarak sıkıştırır GZIP compressionve müşteriye aktarın. Bu özellik, ağ trafiğini azaltır ve sayfanın daha hızlı teslim edilmesine yardımcı olur. Sıkıştırma sembolü kullanılarak yapılandırılabilirtapestry.min-gzip-sizeAppModule.java'da. Varsayılan değer 100 bayttır. Tapestry, yanıtın boyutu 100 baytı geçtiğinde yanıtı sıkıştıracaktır.

Güvenlik

Tapestry, uygulamayı web uygulamasındaki bilinen güvenlik açıklarına karşı korumak için birçok seçenek sunar. Bu seçeneklerden bazıları aşağıda listelenmiştir -

  • HTTPS - Goblen sayfalarına açıklama eklenebilir @Secure güvenli bir sayfa haline getirmek ve https protocol sadece.

  • Page access control - Yalnızca belirli bir kullanıcının erişeceği sayfanın kontrol edilmesi.

  • White-Listed Page - Goblen sayfalarına bir not eklenebilir @WhitelistAccessOnly yalnızca aracılığıyla erişilebilir hale getirmek için localhost.

  • Asset Security- Goblen altında, yalnızca belirli dosya türlerine erişilebilir. Diğerlerine yalnızcaMD5 hash dosya sağlanır.

  • Serialized Object Date - Tapestry, bir HMAC'yi serileştirilmiş Java nesne verilerine entegre eder ve mesajların kurcalanmasını önlemek için istemciye gönderir.

  • Cross Site Request Forgery- Tapestry, herhangi bir CSRF saldırısını önlemek için tapestry-csrf-protection adlı bir 3. taraf modülü sağlar.

  • Security Framework integration- Tapestry, tek bir kimlik doğrulama / yetkilendirme uygulamasına kilitlenmez. Goblen, herhangi bir popüler kimlik doğrulama çerçevesine entegre edilebilir.

Kerestecilik

Tapestry, günlük kaydı için kapsamlı destek, çalışırken uygulamanın ilerlemesinin otomatik olarak kaydedilmesini sağlar. Tapestry, fiili Java günlük kaydı kitaplığını kullanır,SLF4J. Ek açıklama@Logyöntemin giriş ve çıkışını ve olası istisnayı yaymak için herhangi bir bileşen yönteminde olabilir. Ayrıca, Tapestry tarafından sağlanan logger nesnesi, kullanılarak herhangi bir bileşene enjekte edilebilir.@Inject ek açıklama aşağıda gösterildiği gibi -

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

Son olarak, Apache Tapestry'nin özlü, ölçeklenebilir, bakımı yapılabilir, sağlam ve Ajax özellikli uygulamalar oluşturmanın en iyi yollarını sunduğunu söyleyebiliriz. Tapestry, herhangi bir üçüncü taraf Java uygulamasıyla entegre edilebilir. Oldukça kolay ve hızlı olduğu için büyük bir web uygulaması oluşturmaya da yardımcı olabilir.