Non sono sicuro di come pronunciare il titolo qui, e per questo non sono nemmeno sicuro di come cercare la risposta.Esiste un contesto di richiesta in Java?
Ho un motore servlet java che gestisce le richieste. Supponiamo di avere una richiesta doGet:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//set up user data
//do whatever the user requested
SomeClass c = new SomeClass();
c.doSomething();
}
Ora in doSomething, voglio essere in grado di accedere a quale utente ha effettuato la richiesta. In questo momento sto facendo con la creazione di un oggetto Java e passandolo a dovunque ho bisogno:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//set up user data
MyUserObj userObj = new MyUserObj();
userObj.setId('123');
//do whatever the user requested
SomeClass c = new SomeClass(userObj);
c.doSomething();
}
Facendo questo, ho accesso all'istanza di MyUserObj, e può essere ulteriormente passato lungo, se necessario.
Questo sembra sciatto. In asp.net MVC3 (attualmente sto imparando, è iniziato dopo che ho iniziato a imparare java, ma ho trovato che fosse davvero conveniente quindi mi ha fatto ripensare a come lo stavo facendo in java) Posso, ad esempio, archiviare gli articoli per l'attuale thread come questo: HttpContext.Current.Items.Add("myId", "123")
. HttpContext
è quindi disponibile in altre funzioni senza che debba passare un oggetto.
C'è un modo in Java per impostare alcune variabili per richiesta (o anche impostare il MyUserObject
per accedere in seguito) senza passare l'oggetto attraverso come parametro?
Se si tratta di una domanda comune già risolta, sentitevi liberi di indicarmi la direzione giusta perché non ero sicuro di come esprimerla.
Mi sono preso la libertà di modificare il titolo. Si prega di verificare se è una buona – Bozho
Mi piacerebbe semplicemente passarlo esplicitamente, lo stato implicito e le dipendenze sono dannose per la manutenibilità. Quadro come Spring dovrebbe aiutare a rimuovere parte della caldaia e il disordine facendo questo esplicitamente. – millimoose
Se hai capito la mia domanda, mi fido che la modifica del titolo sia migliore del mio titolo originale :) – Two13