Apache Tapisserie - Erweiterte Funktionen
In diesem Kapitel werden einige erweiterte Funktionen von Apache Tapestry ausführlich erläutert.
Umkehrung der Kontrolle
Tapestry bietet eine integrierte Inversion of Control-Bibliothek. Tapisserie ist tief in IoC integriert und verwendet IoC für alle seine Funktionen. Die IoC-Konfiguration von Tapestry basiert wie viele andere IoC-Container auf Java selbst anstelle von XML. IoC-basierte Tapisserie-Module werden in eine JAR-Datei gepackt und einfach ohne Konfiguration in den Klassenpfad verschoben. Die Verwendung von Tapisserie-IoC basiert auf der Leichtigkeit, was bedeutet:
Kleine Schnittstellen mit zwei oder drei Methoden.
Kleine Methoden mit zwei oder drei Parametern.
Anonyme Kommunikation über Ereignisse statt expliziter Methodenaufrufe.
Module
Das Modul ist eine Möglichkeit, die Funktionalität der Tapestry-Anwendung zu erweitern. Tapisserie verfügt sowohl über integrierte Module als auch über eine große Anzahl von Modulen von Drittanbietern. Der Ruhezustand ist eines der heißesten und nützlichsten Module von Tapestry. Es enthält auch Module, die JMX, JPA, Spring Framework, JSR 303 Bean Validation, JSON usw. integrieren. Einige der bemerkenswerten Module von Drittanbietern sind:
- Tapestry-Cayenne
- Tapestry5-googleanalytics
- Gangestry Gang 5 - Tapestry5-HighCharts
- Tapisserie-Bande 5 - Tapisserie5-jqPlot
- Gangestry Gang 5 - Tapestry5-Jquery
- Gangestry Gang 5 - Tapestry5-Jquery-Mobile
- Gangestry Gang 5 - Tapestry5-Portlet
Laufzeitausnahmen
Eines der besten Merkmale des Wandteppichs ist Detailed Error Reporting. Tapisserie hilft einem Entwickler, indem es die neuesten Ausnahmemeldungen bereitstellt. Der Tapisserie-Ausnahmebericht ist einfaches HTML mit detaillierten Informationen. Jeder kann den Bericht leicht verstehen. Tapisserie zeigt den Fehler in HTML an und speichert die Ausnahme in einem einfachen Text mit Datum und Uhrzeit der aufgetretenen Ausnahme. Dies hilft dem Entwickler, die Ausnahme auch in der Produktionsumgebung zu überprüfen. Der Entwickler kann sicher sein, Probleme wie fehlerhafte Vorlagen, unerwartete Nullwerte, nicht übereinstimmende Anforderungen usw. zu beheben.
Live Class und Template Reloading
Tapisserie lädt die Vorlagen und Klassen automatisch neu, wenn sie geändert werden. Diese Funktion ermöglicht die sofortige Reflexion von Anwendungsänderungen, ohne den Erstellungs- und Testzyklus durchlaufen zu müssen. Diese Funktion verbessert auch die Produktivität der Anwendungsentwicklung erheblich.
Betrachten Sie das Stammpaket der Anwendung als org.example.myfirstapp. Anschließend werden die Klassen in den folgenden Pfaden zum erneuten Laden gescannt.
- org.example.myfirstapp.pages
- org.example.myfirstapp.components
- org.example.myfirstapp.mixins
- org.example.myfirstapp.base
- org.example.myfirstapp.services
Das Neuladen der Live-Klasse kann deaktiviert werden, indem der Produktionsmodus auf eingestellt wird true im AppModule.java.
configuration.add(SymbolicConstants.PRODUCTION_MODE,”false”);
Unit Testing
Unit Testing ist eine Technik, mit der einzelne Seiten und Komponenten getestet werden. Tapisserie bietet einfache Optionen zum Testen von Seiten und Komponenten.
Unit Testing einer Seite: Tapisserie bieten eine Klasse PageTesterum die Anwendung zu testen. Dies fungiert sowohl als Browser als auch als Servlet-Container. Die Seite wird ohne den Browser auf der Serverseite selbst gerendert, und das resultierende Dokument kann auf korrektes Rendern überprüft werden. Betrachten Sie eine einfache SeiteHello, wodurch Hallo gerendert wird und der Hallo-Text in einem HTML-Element mit der ID eingeschlossen ist hello_id. Um diese Funktion zu testen, können wir PageTester wie unten gezeigt verwenden -
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");
}
}
Der PageTester bietet neben dem Rendern der Seite auch die Möglichkeit, Kontextinformationen, Formularübermittlung, Linknavigation usw. einzuschließen.
Integriertes Testen
Integriertes Testen hilft, die Anwendung als Modul zu testen, anstatt die einzelnen Seiten wie beim Komponententest zu überprüfen. Beim integrierten Testen können mehrere Module zusammen als Einheit getestet werden. Tapisserie bietet eine kleine Bibliothek namensTapestry Test Utilitiesintegrierte Tests durchführen. Diese Bibliothek ist in das Selenium-Testtool integriert, um die Tests durchzuführen. Die Bibliothek bietet eine BasisklasseSeleniumTestCase, der den Selenium-Server, den Selenium-Client und die Jetty-Instanz startet und verwaltet.
Ein Beispiel für integriertes Testen ist wie folgt:
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");
}
}
Entwicklungs-Dashboard
Das Entwicklungs-Dashboard ist die Standardseite, auf der die Probleme in Ihrer Anwendung identifiziert / behoben werden. Auf das Dashboard wird über die URL zugegriffenhttp://localhost:8080/myfirstapp/core/t5dashboard. Das Dashboard zeigt alle in der Anwendung verfügbaren Seiten, Dienste und Komponentenbibliotheken an.
Antwortkomprimierung
Tapisserie komprimiert die Antwort automatisch mit GZIP compressionund streamen Sie es an den Client. Diese Funktion reduziert den Netzwerkverkehr und unterstützt die schnellere Zustellung der Seite. Die Komprimierung kann über das Symbol konfiguriert werdentapestry.min-gzip-sizein AppModule.java. Der Standardwert ist 100 Byte. Tapisserie komprimiert die Antwort, sobald die Größe der Antwort 100 Bytes überschreitet.
Sicherheit
Tapisserie bietet viele Optionen, um die Anwendung vor bekannten Sicherheitslücken in Webanwendungen zu schützen. Einige dieser Optionen sind unten aufgeführt -
HTTPS - Tapisserieseiten können mit Anmerkungen versehen werden @Secure um es zu einer sicheren Seite zu machen und für die zugänglich zu machen https protocol nur.
Page access control - Steuern der Seite, auf die nur ein bestimmter Benutzer zugreifen kann.
White-Listed Page - Tapisserieseiten können mit a kommentiert werden @WhitelistAccessOnly um es nur durch die zugänglich zu machen localhost.
Asset Security- Unter Tapisserie sind nur bestimmte Dateitypen zugänglich. Auf andere kann nur zugegriffen werden, wenn dieMD5 hash der Datei wird zur Verfügung gestellt.
Serialized Object Date - Tapestry integriert eine HMAC in serialisierte Java-Objektdaten und sendet sie an den Client, um Manipulationen an Nachrichten zu vermeiden.
Cross Site Request Forgery- Tapestry ein 3 rd Party Modul genannt Tapisserie-csrf-Schutz keine CSRF - Angriffe zu verhindern.
Security Framework integration- Tapisserie ist nicht an eine einzelne Authentifizierungs- / Autorisierungsimplementierung gebunden. Tapisserie kann in jedes gängige Authentifizierungsframework integriert werden.
Protokollierung
Tapestry bietet umfassende Unterstützung für die Protokollierung und die automatische Aufzeichnung des Fortschritts der Anwendung während der Ausführung. Tapestry verwendet die De-facto-Java-Protokollierungsbibliothek.SLF4J. Die Anmerkung@Logkann sich in einer beliebigen Komponentenmethode befinden, um den Ein- und Ausgang der Methode sowie die mögliche Ausnahme auszugeben. Außerdem kann das von Tapestry bereitgestellte Logger-Objekt mit dem in jede Komponente injiziert werden@Inject Anmerkung wie unten gezeigt -
public class MyPage {
@Inject
private Logger logger;
// . . .
void onSuccessFromForm() {
logger.info("Changes saved successfully");
}
@Log
void onValidateFromForm() {
// logic
}
}
Schließlich können wir jetzt sagen, dass Apache Tapestry die besten Möglichkeiten bietet, um präzise, skalierbare, wartbare, robuste und Ajax-fähige Anwendungen zu erstellen. Tapisserie kann in jede Java-Anwendung eines Drittanbieters integriert werden. Es kann auch beim Erstellen einer großen Webanwendung hilfreich sein, da es recht einfach und schnell ist.