JSPページの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}
でできるのでしょうか?
jstlを使用すると、jspでアプリケーションオブジェクトを直接取得できます。
${applicationScope['attributeNames']}
この式を使用すると、アプリケーションレベルのオブジェクトをjspで直接取得できます。
[〜#〜]または[〜#〜]
スクリプトレットを使用すると、jspでアプリケーションオブジェクトを取得することもできます。web_appバージョン3.0で実行していて、Servlet 3.0 APIを使用している場合は、以下の例に示すように、HttpServletRequestからServletContextオブジェクトを直接取得できます。
<%
ServletContext sc = request.getServletContext();
sc.getAttribute("attributeName");
%>
ただし、スクリプトレットを使用してアプリケーションオブジェクトを取得する場合は、アプリケーションオブジェクトをキャストする必要があるため、スクリプトレットコードよりもJSTL
を使用する方がはるかに優れています。