2011-01-05 18 views
7

Provengo da una certa esperienza con framework MVC e recentemente ho iniziato ad interessarmi a Spring. Penso che sia un buon quadro, per quello che ho visto fino ad ora. Comunque, nelle mie passate esperienze ero abituato a uno stile di programmazione diverso, soprattutto per la struttura dei controller. Il modo in cui ero abituato a impiegare i controller era diverso. Ovviamente ho usato per mappare in qualche modo una richiesta a loro (pensate alle strutture con varie azioni), ma poi quello che mi è piaciuto è che potreste passare le azioni ad altri controller, quindi rimarrebbero il controller "attivo" e quelli sarebbero responsabili di gestire la richiesta successiva, potrebbe provenire da una richiesta HTTP o da qualcos'altro. Mi è piaciuto molto perché è stato molto buono mantenere lo stato di una sessione utente in modo automatico, rendendo il codice pulito e separando le diverse situazioni in diversi controller. Ora ho letto Spring Web MVC e i documenti parlano solo di controller che rispondono alle richieste, ma non mantengono lo stato e non ci sono informazioni sulla concatenazione dei controller (a parte l'inoltro) e la conservazione dello stato.Programmazione Spring controller

Come gestite questi argomenti in primavera, esiste un modo diverso oppure devo implementare i miei controller di stato e le classi di stato/azione?

Spero che la mia domanda sia abbastanza chiara e mi scuso per la sua ampiezza.

+0

In quali situazioni si desidera avere controller di concatenamento come questo? – OrangeDog

+0

Solitamente lego ogni attività semplice a un controller, in modo da poter isolare la logica di tale azione (un numero di query, visualizzazioni e manipolazioni di dati).Quindi, quando l'utente inserisce un'altra attività, di solito trasmetto tutto al controller che lo fa. Quindi è più facile da mantenere e puoi riutilizzare il codice. – gotch4

+0

Facciamo un esempio: supponiamo di avere un controller che si occupa di mostrare una vista con i numeri di telefono e di scegliere, aggiungere, modificare o rimuovere. In ogni situazione in cui ho bisogno di scegliere un numero nella mia app, vorrei inoltrare a questo controller, quindi farlo restituire il numero selezionato. Questo è ciò che intendevo – gotch4

risposta

5

In Spring MVC è possibile utilizzare i controllori stateless che inoltrano la richiesta/invocando bean con scope di sessione.

Ma se questa è una buona idea o non dipende fortemente dal vostro caso d'uso. - Lo farei solo se ci sono solo alcuni di questi "strani" controller. - Se ne hai molti penso che valga la pena cercare un'altra soluzione. (ad esempio JSF con Spring)

+0

Esempio di bean con scope di sessione? – gotch4

+1

I bean con scope di sessione sono bean (a.k.a. java beans) thare sono memorizzati nella HttpSession. Leggi questo: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-arguments – DwB

8

In Java, la differenza tra i framework Web stateful/stateless viene in genere descritta come la differenza tra framework basati su azioni e basati su componenti.

Entrambi gli approcci sono validi, ma di solito quando si sceglie un quadro che si sono bloccati con il modo di quel quadro di farlo:

Frameworks

Popolare di azione:

componente popolare Frameworks:

(ci sono dei cour se ne sono molti di più, in entrambe le categorie)

+0

Grazie, ma non sto scegliendo un framework, voglio usare Spring, quindi la mia domanda era più sulla programmazione delle pratiche in primavera – gotch4

+0

@ gotch4 Grazie? Quindi un downvote è il tuo modo di dire grazie? –

+0

@ gotch4 e ho risposto alla tua domanda. La risposta è "Spring MVC non funziona in questo modo" –

Problemi correlati