Heim  >  Artikel  >  Java  >  Was ist Aktion in JSP?

Was ist Aktion in JSP?

(*-*)浩
(*-*)浩Original
2019-05-15 11:18:0810496Durchsuche

Die Action-Klasse in JSP ist die Brücke zwischen Benutzeranfragen und Geschäftslogik. Jede Aktion fungiert als Geschäftsagent für den Kunden. Wenn die Klasse „RequestProcessor“ die Anfrage vorverarbeitet, und Sie kann seine eigene Methode „processActionPerform“ aufrufen.

Was ist Aktion in JSP?

Die Action-Klasse ist die Brücke zwischen Benutzeranforderungen und Geschäftslogik. Jede Aktion fungiert als Geschäftsagent für den Kunden. Wenn die RequestProcessor-Klasse eine Anfrage vorverarbeitet, ruft sie nach dem Erstellen einer Action-Instanz ihre eigene Methode „processActionPerform()“ auf, die „execute()“ der Action-Klasse aufruft.

Empfohlener Kurs: Java-Tutorial.

Im Folgenden werden die Aktionsfunktionen in JSP vorgestellt:

Aktion abschließen

<action path="/aFullAction" 
type="somePackage.someActionClass">  
name="someForm" 
input="someJSP.jsp" 
<forward name="successful" path="someJSP.jsp"/>  
<forward name="failed" path="someOtherJSP.jsp"/>  
</action>

Zuerst empfängt das ActionServlet von Struts eine Anfrage und dann entsprechend zu struts- Die Konfiguration von config.xml findet die entsprechende Zuordnung. Wenn der Bereich des Formulars angefordert wird oder es schwierig ist, das Formular im definierten Bereich zu finden, erstellen Sie nach dem Abrufen der Formularinstanz eine neue Formularinstanz seine Methode „reset()“ und fügt dann die Parameter in das Formular ein. Wenn das Attribut „validate“ nicht „false“ ist, rufen Sie die Methode „validate()“ auf, wenn „validate()“ nicht leere ActionErrors zurückgibt, wird es an den URI übertragen Wenn es leere ActionErrors zurückgibt, führen Sie die Methode „execute()“ von Action aus und bestimmen Sie den Ziel-URI basierend auf dem zurückgegebenen ActionForward.

Dies hat zur Folge, dass „execute()“ erst ausgeführt wird, nachdem „validate()“ erfolgreich war;

Nur ​​JSP-Aktion

<action path="/aJSPOnlyAction" 
type="org.apache.struts.actions.ForwardAction" 
parameter="someOtherJSP.jsp" 
/>

Zunächst ruft ActionServlet die Methode „execute()“ von ForwardAction auf, nachdem die Anforderung „execute()“ entsprechend dem konfigurierten Parameterattributwert empfangen wurde. zu dieser URI.

Dies hat zur Folge, dass kein Formular instanziiert wird. Eine realistischere Situation könnte sein, dass das Formular im übergeordneten Bereich der Anforderung definiert wird oder diese Aktion als System nach dem verwendet wird Nachdem die Parameter der Anwendung kompiliert wurden, müssen Sie nur dieses Konfigurationsdokument ändern, ohne das System neu zu kompilieren.

Zwei Aktionen entsprechen einem Formular

<action path="/anAction" 
type="somePackage.someActionClass">  
name="someForm" 
input="someJSP.jsp" 
<forward name="successful" path="/anotherAction.do"/>  
</action>  
<action path="/anotherAction" 
type="somePackage.someOtherActionClass">  
name="someForm" 
input="someOtherJSP.jsp" 
<forward name="successful" path="someResultJSP.jsp"/>  
</action>

Was jede einzelne Aktion betrifft, ist die Verarbeitung nicht vollständig ist der tatsächliche Unterschied zwischen den Aktionen? Dieses Kombinationsmuster kann zur Übergabe von Befehlsobjekten (Formularen) verwendet werden. Es ist zu beachten, dass in der letztgenannten Aktion auch die Methoden „reset()“ und „validate()“ des Formulars aufgerufen werden, sodass wir sicherstellen müssen, dass die Informationen im Formular nicht überschrieben werden.

Die Verarbeitungsmethoden werden grob in zwei Typen unterteilt:

a) Setzen Sie einen Indikator in die Anfrage, um anzuzeigen, dass die vorherige Aktion beabsichtigt, das Formular an die nächste Aktion weiterzugeben, also dass die letztere Aktion den Wert in dieser Form behalten kann. Diese Methode kann nur verwendet werden, wenn vorwärts verwendet wird.

b) Wenn Sie Umleitung statt Weiterleitung verwenden, können Sie den Indikator auf der Sitzungsebene oder einer höheren Ebene setzen und diesen Indikator am letzten Glied der Befehlskette löschen.

<action path="/anAction" 
type="somePackage.someActionClass">  
name="someForm" 
input="someJSP.jsp" 
<forward name="successful" path="/anotherAction.do" redirect="true"/>  
</action>  
<action path="/anotherAction" 
type="somePackage.someOtherActionClass">"  
name="someOtherForm" 
input="someOtherJSP.jsp" 
<forward name="successful" path="someResultJSP.jsp"/>  
</action>

Diese Kombinationsmethode unterscheidet sich hinsichtlich des Prozesses nicht wesentlich von der vorherigen, außer dass wir jetzt separate Formulare für die beiden Aktionen bereitstellen, sodass der Code klarer aussieht. So können wir die Ein- und Ausgabe der WEB-Anwendung getrennt verarbeiten.

Es ist erwähnenswert, dass die letztere Aktion auch versucht, diese Parameter in das Formular zu schreiben, aber wir können es wie folgt handhaben:

a) Verwenden Sie im letzteren einen anderen Satz von Attributnamen form ;

b) Es werden nur Getter bereitgestellt, aber keine Setter.

Die grobe Verarbeitung ist wie folgt:

Die vorherige Aktion empfängt Eingaben, überprüft sie, schreibt die Daten dann in die Geschäftsschicht oder Persistenzschicht und leitet sie an die weiter Letztere Aktion: Die letztere Aktion ruft die Daten manuell aus der Business-Schicht/Persistenzschicht ab, schreibt sie in das Formular (über andere Methoden) und übergibt sie zur Anzeige an die Front-End-JSP.

Der Vorteil davon ist, dass Sie den Wert nicht im Eingabeformular behalten müssen, sodass Sie Umleitung statt Weiterleitung verwenden können. Dies reduziert die Kopplung zwischen den beiden Aktionen und vermeidet unnötige wiederholte Übermittlungen.

Das obige ist der detaillierte Inhalt vonWas ist Aktion in JSP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was ist JSTL?Nächster Artikel:Was ist JSTL?