Vorwort
Ich habe Sie in das Einführungs -Tutorial über Struts2 vorgestellt. Ich werde weiterhin das Wissen, das ich gelernt habe, die Probleme, die ich während des Lernprozesses und der Lösungen aufgetreten habe, teilen. Wenn die Leser Probleme finden, können sie mich natürlich in den Kommentaren unten informieren. Vielen Dank im Voraus
Zugriff auf Webressourcen in Aktion
Webressourcen
Die sogenannte Webressource bezieht sich auf native APIs wie httpServletRequest, httpServletResponse und ServletContext. Als B/S Application Development Controller muss er in der Lage sein, auf Webressourcen zugreifen zu können, z. B. Lesen und Schreiben von Eigenschaften an Domänenobjekte.
So greifen Sie auf Web -Ressourcen zu
Entkopplungsmethode von ServletAPI: Um eine Kopplung mit Servletapi zu vermeiden und Unit -Tests in Aktion zu erleichtern, verkauft Struts2 httpServletRequest, httpSession und servletContext, konstruiert 3 Kartenobjekte, um diese 3 Objekte zu ersetzen. In Aktion können Sie die entsprechenden Kartenobjekte von httpServletRequest, httpServletSession und httpServletContext verwenden, um Daten zu speichern und zu lesen.
public Object get(Object key) um den Anforderungsparameter zu übergeben, um die Implementierung zu erreichen.setRequest() -Methode, damit die RequestMap in allen Aktionsmethoden aufgerufen werden kann. Verwenden Sie ActionContext, um eine Codedemonstration eines Domänenobjekts zu erhalten
Senden Sie die Anforderung von der Seite index.jsp an showPage.jsp und geben Sie die Anforderung an die Aktionsklassenklasse von Struts. Java, um die Anforderung zu verarbeiten
In ObjectAction.java wird das Domänenobjekt von ActionContext abgerufen und der Eigenschaftswert wird ihm hinzugefügt, und die Anforderung wird an showPage.jsp weitergeleitet
Auf der Seite "showPage.jsp" können wir die Werte jedes Domänenobjekts abrufen
index.jsp
< %@ page contentType = "text/html; charset = utf-8" Sprache = "Java" %> <html> <kopf> <title> Handle </title> </head> <body>-Übergeben Sie den Namen Parameter, das aus der Paramäen-Domänen-Objekt in der Action-Klasse des Paramänen-Domain-Objekts erhalten werden kann. nofollow "> Anwendung </a> </body> </html>
Obojection.java
package com.request.test;import com.opensymphony.xwork2.ActionContext;import java.util.Map;public class ObjectAction { public String print() {// Get ActionContext ActionContext actionContext = ActionContext.getContext();// Get the Map corresponding to the action domain object Map<String, Object> applicationMap = actionContext.getApplication();// Assign applicationMap.put ("applicationMap", "applicationMapValue"); // Die Karte entspricht der Sitzungskarte <String, Objekt> SessionMap = ActionContext.GetSession (); // SessionMap zuweisen SessionMap.put ("SessionMap", "SessionMapValue"). Object> RequestMap = (MAP <String, Object>) ActionContext.get ("Request"); // Die der Anforderung entsprechende Karte abrufen. Es gibt keine entsprechende Methode getRequest (). Verwenden Sie daher die Methode map <String ("Anfrage"). Nutzen Sie den Parameterwert der Params string [] params = (string []) paramsmap.get ("name"); // Drucken Sie den Parameterwert für das Konsolensystem.out.println (Params [0]); zurück "Erfolg"; }}Struts.xml (nur den Paketknoten anzeigen)
<package name = "showValue" extends = "struts-default"> <action name = "showPage" methode = "print"> <result name = "scurn">/showPage.jsp </result> </action> </package>
showPage.jsp (Zeigt nur den Body -Tag -Inhalt an)
<%--Get the value of the application domain object--%>${applicationScope.applicationMap}<br><%-Get the value of the session domain object--%>${sessionScope.sessionMap}<br><%-Get the value of the request domain object--%>${requestScope.requestMap}<br><%-Get the value of the request domain Objekt-%> $ {RequestScope.RequestMap}Details und Aufmerksamkeit auf (ziehen Sie das Bild auf die neue Registerkarte des Browsers, um das größere Bild anzuzeigen)
Zugriff auf Webressourcen mit der XXXAWare -Schnittstelle
Wie bei der Verwendung von ActionContext wird das Senden einer Anforderung an ObjectAction.java auf der Seite index.jsp von der print2() -Methode verarbeitet.
Weisen Sie dem Domänenobjekt in print2() -Methode in ObjectActActace.java einen Wert zu und erhalten Sie den Wert des übergebenen Parameters
Schließlich erhalten wir den Wert des Domain -Objekts in ShowPage.jsp. Um von der vorherigen zu unterscheiden, fügen wir jedem Ausgaberwert Symbole hinzu, um sie zu unterscheiden.
index.jsp (Zeigt den Körper -Tag -Teil an)
<a href = "showPage2.Action? name = smzyy" rel = "externer nofollow"> topage2 </a>
Obojection.java
paket com.request.test; import com.opensymphony.xwork2.ActionContext; import org.apache.struts2.interceptor.applicationAWare; java.util.map; öffentliche Klasse ObjectAction implementiert RequestAwe, SessionAWare, ApplicationAware, Parameteraware {private map <String, Object> RequestMap; private map <string, Object> SessionMap; private map <string, Object> applicationMap; private map <string, string []> parameterMap; // showPage.Action Die erforderliche Methode public String print2 () {ApplicationMap.put ("ApplicationMap", "ApplicationMapval ==="); RequestMap.put ("RequestMap", "RequestMapval ==="); SessionMap.put ("SessionMap", "SessionMapval ==="); String [] name = parametermap.get ("name"); System.out.println (Name [0] + "===="); zurück "Erfolg"; } @Override public void setApplication (map <String, Objekt> map) {this.applicationMap = map; } @Override public void setParameters (map <String, String []> map) {this.parametermap = map; } @Override public void setRequest (map <string, Objekt> map) {this.requestmap = map; } @Override public void setSession (map <String, Objekt> map) {this.SessionMap = map; }}Struts.xml (Zeigt den Paketknotenteil an)
<package name = "showValue" extends = "struts-default"> <actionname = "showPage2" methode = "print2"> <result name = "scurn">/showPage.jsp </result> </action> </package>
showPage.jsp (wie oben hat es sich überhaupt nicht geändert)
Auswahlvorschläge
Durch die beiden oben genannten Methoden zum Erhalten von Webressourcen können wir wissen, dass, wenn die erste Methode viele Aktionsmethoden hat, bei denen Domänenobjekte aufgerufen werden müssen, jede Methode implementiert werden muss, während die zweite Methode nur einmal implementiert werden muss. In der tatsächlichen Entwicklung wird die entsprechende Methode ausgewählt, um sie gemäß der Situation zu implementieren.
Gekoppelt mit servletapi: Es kann auf mehr Servletapis zugegriffen werden und native Methoden können aufgerufen werden
Die Implementierungsmethode ähnelt hier der obigen Implementierungsmethode, daher werde ich nicht darüber sprechen.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.