English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
1.Der Client initialisiert eine Anfrage an den Servlet-Container (Tomcat);
2.Diese Anfrage durchläuft eine Reihe von Filtern und wird dann FilterDispatcher aufgerufen;
3.FilterDispatcher fragt ActionMapper, um zu entscheiden, ob diese Anfrage eine bestimmte Action aufrufen soll;
4.Wenn ActionMapper entscheidet, eine bestimmte Action aufzurufen, übergibt FilterDispatcher die Verarbeitung der Anfrage an ActionProxy, ActionProxy fragt den ConfigurationManager nach der Konfigurationsdatei des Frameworks, findet die zu aufrufende Action-Klasse, was in der Regel das Lesen von struts.xml ist;
5.Der ActionProxy erstellt eine Instanz von ActionInvocation, die ActionInvocation-Instanz wird über Namensmuster aufgerufen, und im Vor- und Nachgang des Aufrufs der Aktion werden die beteiligten Interceptor aufgerufen;
6.Nachdem die Aktion abgeschlossen ist, findet die ActionInvocation basierend auf der Konfiguration in struts.xml die entsprechenden Rückgabewerte.
Zum Beispiel der Code:
struts2Nachdem die .action-Anfragen erhalten wurden, wird entschieden, welche Geschäftslogik-Komponente aufgerufen wird, basierend auf einem Teil des Namens;
struts2Alle Aktionen in der Anwendung werden in struts.xml definiert;
struts2Das Action-Objekt, das Benutzeranfragen verarbeitet, ist nicht der von den Benutzern implementierte Geschäftssteuerung, sondern ein Action-Proxy, da der von den Benutzern implementierte Geschäftssteuerung nicht mit ServletAPI gekoppelt ist und daher keine Benutzeranfragen verarbeiten kann.
<html> <head> <title>SUCCESS</title> </head> <body> <form action="hello.action" method="post"> BENUTZERNAME:<input type="text" name="name"></br> PASSWORT:<input type="password" name="pass"></br> <input type="submit" value="Absenden"> </form> </body> </html>
Zum Beispiel das obige Formular hello.action, dieses action-Attribut ist kein gewöhnlicher Servlet auch keine dynamische JSP-Seite, wenn das Formular an hello.action gesendet wird, leitet Struts2der FilterDispatcher tritt in Aktion, leitet die Benutzeranfragen an die entsprechenden Aktionen weiter.
Zu beachten ist: Struts2 Die Standard-Aktion blockiert alle Anfragen mit dem Suffix .action. Wenn wir eine Formularübergabe an die Aktion verarbeiten möchten, sollte das Formular-Attribut action auf das Format .action gesetzt werden.
Steuerungsklasse
public class HelloAction { private String name; private 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 "Erfolg"; } else{}} return "error"; } } }
Nach Abschluss der vorangegangenen Ausführung wurde nur eine Umleitung der Seite durchgeführt, ohne den Benutzerstatus zu verfolgen. Nach dem Login des Benutzers müssen wir den Benutzernamen als HTTPSession-Statusinformation hinzufügen.
Um auf das Httpsession-Objekt zuzugreifen, struts2Bietet eine ActionContext-Klasse, die eine getSession() - Methode bereitstellt, deren Rückgabewert jedoch nicht HttpSession() ist, sondern Map(), aber Struts2der Interceptor ist für den Wechsel zwischen Session() und HttpSession() verantwortlich.
Um zu überprüfen, ob die gesetzten Session-Attribute erfolgreich sind, kann die nachfolgende Einstellung für die erfolgreiche Oberfläche vorgenommen werden
<html> <head> <base href="<%=basePath%>" rel="external nofollow" > <title>SUCCESS</title> </head> <body> Willkommen, ${sessionScope.user}, Sie sind bereits eingeloggt. </body> </html>
Verwenden Sie JSP2.0-Ausdrucks语法, um das user-Attribut der HTTP Session auszugeben.
Integration der Action-Werkzeugklasse in ActionSupport
Die Klasse ActionSupport ist ein Werkzeugklasse und hat bereits das Action-Interface implementiert. Darüber hinaus hat sie das Validateablez-Interface implementiert und bietet Funktionalität zur Datenvalidierung.
Um die Funktionalität der Eingabedatenvalidierung hinzuzufügen, wird die überschriebene validate-Methode im Action hinzugefügt.
public void validate() { if(getName()==null || getName().trim().equals("")){ addFieldError("name",getText("name.required")); } if(getPass()==null || getPass().trim().equals("")){ addFieldError("pass", getText("pass.required")); } }
Der neu hinzugefügte und überschriebene validate-Methode wird vor dem Systems execute() - Methodenaufruf ausgeführt. Wenn nach dem Ausführen dieser Methode bereits Datenvalidierungsfehler im fieldError der Action-Klasse enthalten sind, wird die Anfrage an die input-logische Ansicht weitergeleitet. Daher muss der Name der input-logischen Ansicht in struts.xml hinzugefügt werden, um auf die Login-Seite zu springen.
Der Nachteil dieser validate-Methode ist, dass eine große Menge an Neuschreibungen der validate-Methode erforderlich ist, daher kann sie mit struts verwendet werden.2durch die Validierungsumgebung validiert.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> <validators> <!--Formularname überprüfen--> <field name="name"> <field-validator type="requiredstring"> <message key="name.required">/> </field-validator> </field> <!--Formularpass überprüfen--> <field name="pass"> <field-validator type="requiredstring"> <message key="pass.required">/> </field-validator> </field> </validators>
Zusammenfassung
Das ist alles, was in diesem Artikel über struts2Dies enthält die vollständige Analyse der Prozesse und einer Reihe von relevanten Kenntniscodeinhalten, die hoffentlich allen helfen. Freunde, die daran interessiert sind, können weiterhin andere relevante Themen dieser Website lesen. Jegliche Unzulänglichkeiten sind willkommen, um Anmerkungen zu hinterlassen. Vielen Dank für die Unterstützung der Freunde dieser Website!
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrechtlichem Inhaber. Der Inhalt wurde von Internetbenutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige Urheberrechtsinhalte entdecken, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @ beim Senden einer E-Mail zur Meldung von Verstößen und stellen Sie relevante Beweise zur Verfügung. Bei nachgewiesener Verletzung der Rechte wird diese Website sofort den verdächtigen Inhalt löschen.)