2014-09-02 28 views
6

Jak znaleźć mój atrybut z obiektu ServletContext na stronie JSP?Uzyskaj atrybut z ServletContext na stronie JSP.

ustawić go zanim w:

public class MyServletContextListener implements ServletContextListener{ 

private static final Logger logger = LoggerFactory.getLogger(MyServletContextListener.class); 

@Override 
public void contextInitialized(ServletContextEvent event) { 
    logger.info("Init gameEngine in listener"); 
    Engine engine = Engine.getInstance(); 
    event.getServletContext().setAttribute("engine", engine); 
} 

@Override 
public void contextDestroyed(ServletContextEvent event) { 

}} 

a teraz chcą uzyskać na stronie JSP. Może to możliwe z ${pageContext.servletContext.attributeNames}?

Odpowiedz

14

użyciu JSTL można bezpośrednio dostać obiektu aplikacji JSP

${applicationScope['attributeNames']} 

za pomocą tego wyrażenia można uzyskać obiekt poziomu aplikacji bezpośrednio w JSP

LUB

użyciu scriptlet również może pobierz obiekt aplikacji w jsp i , jeśli korzystasz z wersji web_app 3.0 i ma interfejs API Servlet 3.0, możesz bezpośrednio pobrać obiekt ServletContext z formularza HttpServletReq uest jak pokazano poniżej:

<% 

    ServletContext sc = request.getServletContext(); 
    sc.getAttribute("attributeName"); 

%> 

ale trzeba oddać obiekt aplikacji podczas korzystania scriptlet dostać obiektu aplikacji tak JSTL jest znacznie lepiej użyć wtedy skrypty kod

Read more:

+2

Thanks o odpowiedź. Użyłem $ {applicationScope.engine.rooms} i działa to dla mnie!) –

+0

nie ma metody request.getServletContext(); dlaczego – shareef

+0

Zamiast tego użyj 'request.getSession(). getServletContext()'. – DFB