English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
1. Il client inizializza una richiesta verso il contenitore di servlet (Tomcat);
2. Questa richiesta passa attraverso una serie di filtri, quindi viene chiamato FilterDispatcher;
3. FilterDispatcher chiede a ActionMapper per determinare se questa richiesta deve chiamare un'azione;
4. Se ActionMapper decide di chiamare un'azione, FilterDispatcher consegna la gestione della richiesta a ActionProxy, ActionPro chiede al file di configurazione del framework tramite ConfigurationManager per trovare la classe dell'azione da chiamare, generalmente legge struts.xml;
5. ActionProxy crea un'istanza di ActionInvocation, l'istanza di ActionInvocation utilizza lo schema di nome per chiamare, prima e dopo la chiamata all'azione, sono coinvolti i chiamamenti degli intercettori correlati;
6. Una volta completata l'esecuzione dell'Action, ActionInvocation trova il risultato corrispondente configurato in struts.xml
Ad esempio, il codice:
Quando struts2 riceve una richiesta .action, determina quale componente logico di business chiamare in base alla configurazione di struts.xml;
Tutte le Action nell'applicazione struts2 sono definite in struts.xml;
L'istanza di Action utilizzata da struts2 per gestire le richieste dell'utente non è il controller di business implementato dall'utente, ma un'agenzia di Action, perché il controller di business implementato dall'utente non è incollato con ServletAPI, quindi ovviamente non può gestire le richieste dell'utente.
<html> <head> <title>SUCCESS</title> </head> <body> <form action="hello.action" method="post"> USERNAME:<input type="text" name="name"></br> PASSWORD:<input type="password" name="pass"></br> <input type="submit" value="Invia"> </form> </body> </html>
Ad esempio, il modulo sopra indicato hello.action, questa proprietà action non è un servlet comune né una pagina JSP dinamica, quando il modulo viene inviato a hello.action, il FilterDispatcher di Struts2 viene attivato e il richiesta dell'utente viene reindirizzata al corrispondente Action.
Attenzione: Struts2 Action di default intercetta tutte le richieste con suffisso .action, se dobbiamo inviare un modulo per essere elaborato dall'Action, dovremmo impostare il属性的azione del modulo nel formato .action.
Classe di controllo
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 "success"; } else{}} return "error"; } } }
Dopo l'esecuzione del passaggio precedente, è stato solo eseguito il reindirizzamento della pagina, senza tracciare lo stato dell'utente, quando l'utente ha completato il login, dobbiamo aggiungere il nome utente come stato dell'HTTPSession.
Per accedere all'istanza Httpsession, Struts2 fornisce una classe ActionContext, che fornisce un metodo getSession(), ma il valore di ritorno di questo metodo non è HttpSession() ma Map(), ma gli intercettori di Struts2 si occuperanno della transizione tra Session() e HttpSession().
Per verificare che l'attributo sessione impostato sia stato impostato con successo, è possibile impostare così l'interfaccia successiva
<html> <head> <base href="<%=basePath%>" rel="external nofollow" > <title>SUCCESS</title> </head> <body> Benvenuto, ${sessionScope.user}, hai effettuato il login. </body> </html>
Utilizzare l'interfaccia di espressione JSP2.0 per output l'attributo user dell'HTTP Session.
L'ActionSupport è integrato con Action
La classe ActionSupport è una classe di utilità e ha già implementato l'interfaccia Action, oltre a implementare l'interfaccia Validateablez, che fornisce la funzione di convalida dei dati.
Per aumentare la funzione di convalida dei dati di input, viene aggiunto un metodo validate riscritto nell'Action.
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")); } }
Il metodo validate riscritto aggiunto sopra viene eseguito prima del metodo execute() del sistema, se dopo l'esecuzione di questo metodo l'Action fieldError contiene già errori di convalida dei dati, la richiesta verrà reindirizzata alla vista logica input, quindi è necessario aggiungere il nome della vista logica input in struts.xml per farlo saltare alla pagina di login.
Uno dei difetti di questo metodo validate è che è necessario riscrivere in massa il metodo validate, quindi può essere utilizzato il framework di convalida di struts2 per la convalida.
<?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> <!--Verifica del modulo name--> <field name="name"> <field-validator type="requiredstring"> <message key="name.required"/> </field-validator> </field> <!--Verifica del modulo pass--> <field name="pass"> <field-validator type="requiredstring"> <message key="pass.required"/> </field-validator> </field> </validators>
Sommario
Questo è tutto il contenuto di questo articolo sull'analisi del codice del flusso di struts2 e una serie di conoscenze correlate, spero che sia utile a tutti. Gli amici interessati possono continuare a consultare altre sezioni correlate di questo sito, e sono benvenuti i commenti per eventuali difetti. Grazie per il supporto degli amici a questo sito!
Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright spetta ai rispettivi autori, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale. Se trovi contenuti sospetti di violazione del copyright, sei invitato a inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata, questo sito rimuoverà immediatamente il contenuto sospetto di violazione del copyright.