2014-09-02 4 views
6

पर सर्वलेट कॉन्टेक्स्ट से विशेषता प्राप्त करें मैं जेएसपी पेज पर ServletContext ऑब्जेक्ट से अपनी विशेषता कैसे प्राप्त कर सकता हूं?जेएसपी पेज

मैं में पहले यह सेट:

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

}} 

और अब JSP पेज पर प्राप्त करना चाहते हैं। शायद ${pageContext.servletContext.attributeNames} के साथ करना संभव है?

उत्तर

14

JSTL का उपयोग कर आप सीधे इस अभिव्यक्ति का उपयोग करके jsp

${applicationScope['attributeNames']} 

में आवेदन वस्तु प्राप्त कर सकते हैं आप

या

भी स्क्रिप्टलेट का उपयोग कर सकते हैं jsp में सीधे अपने आवेदन स्तर वस्तु प्राप्त कर सकते हैं यदि आप web_app संस्करण 3.0 पर चल रहे हैं और Servlet 3.0 API पर आप ऑब्जेक्ट ऑब्जेक्ट प्राप्त करें और ServletContext ऑब्जेक्ट फॉर्म HttpServletReq प्राप्त कर सकते हैं तो आप jsp और में एप्लिकेशन ऑब्जेक्ट प्राप्त करें uest के रूप में उदाहरण नीचे में दिखाया गया है:

<% 

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

%> 

लेकिन आप जब आप आवेदन वस्तु पाने के लिए स्क्रिप्टलेट का उपयोग अपने आवेदन वस्तु कास्ट करने के लिए है, इसलिए JSTL तो स्क्रिप्टलेट कोड का उपयोग करने

Read more:

+2

धन्यवाद बेहतर है उत्तर के लिए मैंने $ {applicationScope.engine.rooms} का उपयोग किया और यह मेरे लिए काम करता है!) –

+0

अनुरोध का कोई तरीका नहीं है .getServletContext(); क्यों – shareef

+0

'request.getSession() का उपयोग करें। इसके बजाय getServletContext()' का उपयोग करें। – DFB