1. Der Client initialisiert eine Anfrage an den Servlet Container (Tomcat);
2. Diese Anfrage durchläuft eine Reihe von Filtern, und dann wird FilterDispatcher aufgerufen.
3.. FilterDispatcher bittet ActionMapper, zu entscheiden, ob die Anfrage eine bestimmte Aktion anrufen muss.
V. ActionPro fragt die Framework -Konfigurationsdatei gemäß dem ConfigurationManager und findet die Aktionsklasse, die aufgerufen werden muss. Im Allgemeinen liest Struts.xml.
5. ActionProxy erstellt eine Instanz von ActionInvocation. Die ActionInvocation -Instanz wird unter Verwendung eines benannten Musters aufgerufen. Vor und nach dem Berufungsprozess ist der Ruf des relevanten Interceptors beteiligt.
6. Sobald die Aktion ausgeführt wurde, findet ActionInvocation das entsprechende Rückgabeergebnis gemäß der Konfiguration in Struts.xml.
Zum Beispiel Code:
Nachdem Struts2 die Anfrage der .Action erhalten hat, entscheidet sie anhand des Teils, welche Geschäftslogikkomponente Sie aufrufen sollen.
Alle Aktionen in Struts2 -Anwendungen sind in Struts.xml definiert.
Die von STRUTS2 verwendete Aktionsinstanz, um Benutzeranforderungen zu verarbeiten, ist kein benutzergerechtigter Business-Controller, sondern ein Aktionsproxy, da der vom Benutzer implementierte Service-Controller nicht mit dem ServletAPI gekoppelt ist und offensichtlich keine Benutzeranfragen bearbeiten kann.
<html> <Head> <titels> Erfolg </title> </head> <body> <Form Action = "hello.action" methode = "post"> username: <input type = "text" name "name"> </br> Passwort: <Eingabe type = "password" name = "pass"> </br> <eingabe type = "subjekt" value = "arrang"> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body
Zum Beispiel ist diese Aktionseigenschaft die Hello.Action des obigen Formulars kein gewöhnliches Servlet oder eine dynamische JSP -Seite. Wenn das Formular an Hello.Action eingereicht wird, funktioniert der FilterDispatcher von Struts2 und leitet die Benutzeranforderung an die entsprechende Aktion weiter.
Beachten Sie, dass die Aktion von Struts2 alle Anfragen mit Suffixe abfängt. Aktion standardmäßig. Wenn wir das Formular zur Verarbeitung an Aktion einreichen müssen, sollte das Formular Aktionsattribut auf das Format von .Action festgelegt werden.
Controller -Klasse
public class HelloAction {privater String -Name; privater String -Pass; public void setName (String name) {this.name = name;} public void setpass (String pass) {this.pass = pass;} public String execute () {if ("yang" .equals (name) && "1234" .equals (pass) {{{return ";Nach Abschluss der vorherigen Ausführung wird die Seitenweiterung nur durchgeführt und der Status des Benutzers nicht verfolgt. Wenn sich der Benutzer anmeldet, müssen wir den Benutzernamen des Benutzers als Statusinformationen der HTTPSession hinzufügen.
Um auf die HTTPSession -Instanz zuzugreifen, bietet Struts2 eine ActionContext -Klasse, die eine GetSession () -Methode liefert, der Rückgabewert dieser Methode ist jedoch nicht httpSession (), sondern MAP (), sondern der Interceptor von Struts2 für das Umschalten zwischen der Sitzung () und HTTPSession () verantwortlich.
Um zu überprüfen, ob das von uns festgelegte Sitzungsattribut erfolgreich ist, können wir die Schnittstelle nach dem Erfolg festlegen
<html> <kopf> <base href = "<%= basepath%>" rel = "external nofollow"> <title> Erfolg </title> </head> <body> willkommen, $ {sesionscope.user}, Sie sind bereits angemeldet. </body> </html>Verwenden Sie JSP2.0 Expressionsyntax, um das Benutzerattribut in der HTTP -Sitzung auszugeben.
Action Tool Class Integration ActionVortsupport
Die ActionVort -Klasse ist eine Werkzeugklasse und hat die Aktionsschnittstelle implementiert. Darüber hinaus implementiert es die validierbare Schnittstelle und bietet Datenüberprüfungsfunktion.
Um die Überprüfungsfunktion von Eingabedaten zu erhöhen, fügen Sie die Umschreibungsmethode in Aktion hinzu.
public void validate () {if (getName () == null || getName (). trim (). Equals ("") {addfielderror ("name", getText ("name.Required"); getText ("pass.Required"));}}Die oben hinzugefügte umgeschriebene Validierungsmethode wird vor der Ausführungsmethode des Systems ausgeführt. Wenn der Fielderror der Aktionsklasse nach der Ausführung dieser Methode bereits Datenüberprüfungsfehler enthält, wird die Anforderung an die logische Eingabeansicht weitergeleitet. Sie müssen daher auch den Namen der logischen Ansicht in struts.xml hinzufügen, um sie zur Anmeldeseite springen zu lassen.
Der Nachteil dieser Validierungsmethode besteht darin, dass die Validierungsmethode viel Umschreiben erfordert, sodass Sie das Verifizierungsrahmen von Struts2 verwenden können.
<? <field-Validator type = "fordersString"> <message key = "name.Required"/> </field-Validator> </field> <!-Formular pass-> <field name = "pass"> <field-Validator type = "fordersstring"> <message key
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über den Prozess von Struts2 und eine Reihe verwandter Wissenscodeanalysen. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!