2014-09-02 7 views
6

Wie kann ich mein Attribut von ServletContext-Objekt auf JSP-Seite finden?Get-Attribut von ServletContext auf JSP-Seite

Ich stelle es vor in:

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) { 

}} 

und wollen nun auf JSP-Seite zu bekommen. Vielleicht ist es möglich, mit ${pageContext.servletContext.attributeNames} zu tun?

Antwort

14

mit jstl können Sie direkt Anwendungsobjekt in jsp

${applicationScope['attributeNames']} 

durch die Verwendung dieses Ausdrucks erhalten Sie Ihre Anwendungsebene Objekt direkt in jsp

OR auch

scriptlet mit bekommen können Get Application-Objekt in JSP und Wenn Sie auf Web_App Version 3.0 ausgeführt und Servlet 3.0 API haben, können Sie direkt ServletContext-Objektformular HttpServletReq abrufen uest wie im folgenden Beispiel gezeigt:

<% 

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

%> 

aber Sie haben Ihre Anwendung Objekt zu werfen, wenn Sie scriptlet verwenden Anwendungsobjekt zu erhalten, so JSTL ist viel besser als scriptlet Code

Read more:

+2

Dank zu verwenden zur Antwort. Ich habe $ {applicationScope.engine.rooms} verwendet und es funktioniert für mich!) –

+0

es gibt keine Methode von request.getServletContext(); warum – shareef

+0

Verwenden Sie stattdessen 'request.getSession(). getServletContext()'. – DFB