ServletContext范围是Servlets中的应用程序级别scoe。但是在JSP中,应用程序级别范围由隐式对象应用程序提供。我们还可以在jsp中使用ServletContext吗?它与应用程序隐式对象有何不同?为什么我们应该在JSP中使用它?
答案 0 :(得分:2)
应用程序是ServletContext。它是同一个对象,在JSP中使用它代替getServletContext方法可能更容易。
请参阅以下代码:
<%
out.println("app: " + application);
out.println("context: " + getServletContext());
%>
打印:
app: com.ibm.wsspi.webcontainer.facade.ServletContextFacade@774cfa76
context: com.ibm.wsspi.webcontainer.facade.ServletContextFacade@774cfa76
答案 1 :(得分:0)
隐式对象被认为是我们可以在没有显式声明的情况下使用的预定义变量,应用程序对象与您在servlet中调用getServletContext()时获得的ServletContext对象相同。
每个JSP都被翻译并编译为servlet,但是JSP规范为我们提供了一个关于实现的抽象层次,我认为这就是这些隐式对象的原因所以你不需要知道servlet espeficiation。 您也可以使用EL(表达式语言),它还定义了其他隐式对象,因此在您的情况下,您可以通过这种方式使用应用程序上下文:
<强> JSP 强>
<%= application.getAttribute("myVariable") %>
<强> EL 强>
${applicationScope.myVaraible}
applicationScope
EL对象的一个重要区别只是一个Map来访问属性,它不是ServletContext对象。