Sto creando una semplice applicazione web. Ho bisogno di ottenere riferimenti all'oggetto ServletContext in quella classe. Come posso averlo?Come posso ottenere l'oggetto ServletContext in un semplice file di classe?
risposta
Faresti meglio a passarlo come argomento al costruttore del tuo oggetto, o impostarlo usando un metodo setter.
In effetti, è possibile ottenere l'attributo di contesto che è rilevante per il proprio oggetto e passarlo solo tramite costruttore/setter. Per esempio:
YourClass obj =
new YourClass((AnotherClass) servletContext.getAttribute("yourAttribute"));
A molto peggiore e più possibilità complicazione è quello di:
- Creare un
ServletContextListener
- registrarlo in web.xml con
<listener><listener-class></listener-class></listener>
- sul
contextInitialized(..)
ottenere ilServletContext
dall'evento e memorizzarlo in un singleton - un campo statico qualche volta.
In alternativa, è possibile farlo su ogni richiesta, utilizzando un ServletRequestListener
e riporlo in un ThreadLocal
invece.
Quindi è possibile ottenere il valore tramite chiamando il vostro Singleton/titolare ThreadLocal come questo:
ServletContextHolder.getCurrentServletContext()
Oppure passare a un costruttore una copia/vista di 'ServletContext' relativa all'oggetto in questione. –
@ Tom: questo è già menzionato nella prima frase. – BalusC
forse Tom intendeva che dovresti ottenere l'attributo di contesto che è rilevante per l'oggetto e passarlo solo. Lo includerò. – Bozho
ho avuto questo problema, ma dal momento che avevo chiamato la classe da un JSP, ho semplicemente passato la richiesta HttpServletRequest" "riferimento dal JSP alla classe e ha effettuato la chiamata in classe a:
String appPath = request.getServletContext().getRealPath("");
- 1. Come ottenere il servizio web ServletContext in Rest
- 2. @Autowired ServletContext in @Service
- 3. Come posso ottenere il nome di un file in Dart?
- 4. Perché ho bisogno di una HttpSession per ottenere ServletContext?
- 5. Come posso ottenere le dimensioni di caricamento di un file utilizzando Javascript semplice?
- 6. ServletContext getContextPath()
- 7. Come posso ottenere un elenco di file modificati in svn?
- 8. ServletContext getResource non funziona
- 9. Come posso creare un semplice file docx con POI Apache?
- 10. Come posso ottenere il caricamento massimo di file in byte?
- 11. Come posso ottenere un dump di database postgres in testo semplice su heroku?
- 12. Java: modo semplice per ottenere lo stub del metodo dai file di classe all'interno di un file JAR? Riflessione?
- 13. Come posso includere un pacchetto di composizione in php semplice?
- 14. Un modo semplice per ottenere un file di test in JUnit
- 15. ottenere HttpSession | Richiesta da semplice classe java non servlet classe
- 16. Come posso ottenere il nome di una classe Ruby?
- 17. java.lang.NoClassDefFoundError: javax/servlet/ServletContext
- 18. Python - come posso ottenere il nome di classe all'interno di un metodo di classe - utilizzando @classmethod
- 19. Come posso ottenere tutte le immagini da un file qrc?
- 20. Come posso ottenere l'architettura di un file '.a'?
- 21. Come posso ottenere la profondità di un file jpg?
- 22. Come posso impostare un semplice progetto gradle che usi sqlite4java?
- 23. ottenere la directory di file istanziato un rubino di classe
- 24. Come scrivere una semplice classe in C++?
- 25. Come posso ottenere un intervallo di celle in PHPExcel?
- 26. Un modo semplice per ottenere il tipo di classe wrapper in Java
- 27. Trovare l'URL dell'applicazione con solo ServletContext
- 28. Come posso ottenere un CGImageRef da un file?
- 29. In Laravel 5, come posso ottenere un elenco di tutti i file in una cartella pubblica?
- 30. Come posso ottenere l'elenco dei metodi in una classe Python?
Per favore basta passarlo. Non andare per l'opzione peggiore. Per cosa ti serve esattamente? Su quali metodi ti piacerebbe invocare? Ci devono essere modi migliori per raggiungere questo obiettivo. – BalusC