struts2 hinzufügen Abfangjäger in struts.xml für alle action-Klasse
Ich habe das Struts framework 2 und ich habe eine Webanwendung erstellt, die eine Login-Seite. Ich habe drei verschiedene Action
Klassen benannt Action1
, Action2
, Action3
, und verschiedene Ansichten für die JSP-Seiten dargestellt sind, indem Sie einige business-Logik in der Action
Klassen.
Nun, ich möchte, um zu überprüfen, ob ein Benutzer angemeldet hat, bevor die Action
Klasse führt die Verarbeitung. Also, ich habe einen interceptor unten, funktioniert einwandfrei.
public String intercept(ActionInvocation invocation) throws Exception
{
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
HttpSession session = request.getSession();
if(session.isNew())
{
response.sendRedirect("Login.action");
}
System.out.println("Interceptor Fired");
String result = invocation.invoke();
return result;
}
Was will ich in der struts.xml
ist anstelle der Zugabe ein interceptor für alle Aktionen, wie die, die unten
<interceptor-ref name="newStack"/>
Meine struts.xml
Datei hat
<package name="default" extends="struts-default">
<interceptors>
<interceptor name="printMsgInterceptor" class="LoginInterceptor"></interceptor>
<interceptor-stack name="newStack">
<interceptor-ref name="printMsgInterceptor"/>
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<action name="actone" class="Action1">
<result name="success">/success.jsp</result>
<interceptor-ref name="newStack"/>
</action>
<action name="acttwo" class="Action2">
<result name="success">/success.jsp</result>
<interceptor-ref name="newStack"/>
</action>
<action name="actthree" class="Action3">
<result name="success">/success.jsp</result>
<interceptor-ref name="newStack"/>
</action>
</package>
Für jede Handlung, die ich haben will, einige definition, geschrieben in struts.xml
läuft die Abfangjäger statt manuell hinzufügen
<interceptor-ref name="newStack"/>
InformationsquelleAutor Java Beginner | 2013-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nun
testStack
ausgeführt wird, für jede Anfrage<action name="actionname" class="Klasse"> <interceptor-ref name="default"/> .... </Aktion>
Alternativ können Sie definieren, die interceptor-stack für ein bestimmtes Paket und jedem Paket erweitert, es wird die Standard-stack. Andere Aktionen nicht abgefangen werden (wie bei der Anmeldung) definiert werden können, in weitere Pakete erweitern nicht die eine, wo Sie definiert die Standard-stack-interceptor
InformationsquelleAutor PSR
Verwenden
Wenn Sie nicht setzen
interceptor-ref
manuell für jede Aktion, die Sie verwenden könnten, diedefault-interceptor-ref
abfangen aller Aktionen, die nicht explizit definiert Abfangjäger-Konfiguration. Sehen Wie gestalten wir ein Interceptor verwendet werden, mit jeder Handlung.Allerdings, wenn Sie sagen, dass der interceptor oben funktioniert gut, ich werde Sie ermuntern, vorsichtig zu sein über eine business-Logik, die der login-Vorgang nicht ausgeführt werden, wenn es nicht auf die erste Ausführung. Anstelle der überprüfung für die neue session, die Sie überprüfen sollten, für die Ergebnisse, die der authentifizierte Benutzer sind, und speichern diese Ergebnisse in der Sitzung, die Sie überprüfen könnten, in den interceptor. Sehen Sie, diese Frage für Beispiel.
Beispiel des Schreibens der interceptor, verwenden Sie die authentifizierten Benutzer Informationen mit der session, die Sie finden konnte hier.
InformationsquelleAutor Roman C