首先分别说说三者是什么:


  ①jsp中 application:

application 对象也是在服务器启动就生成一个,服务器关闭,其才释放。保证了用户在不同的页面间浏览可以获取共享的公共信息。


  ②EL表达式中applicationScope

 ${applicationScope.bizCodes[category]}" ------------EL表达式


   jsp中因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
  假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
 属性范围在EL中的名称

         【jsp中】       【EL表达式中】                     
         Page          PageScope
         Request          RequestScope
         Session          SessionScope
         Application      ApplicationScope

 

  ③Java中servletContext

ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。

换一种方式说吧,运行在Java虚拟机中的每一个Web应用程序都有一个与之相关的Servlet上下文。ServletContext对象是Web服务器中的一个已知路径的根,Servlet上下文被定位于http://localhost:8080/项目名.以 /项目名 请求路径(称为上下文路径)开始的所有请求被发送到与此ServletContext关联的Web应用程序。一个ServletContext对象表示了一个Web应用程序的上下文。

Servlet上下文:Servlet上下文提供对应用程序中所有Servlet所共有的各种资源和功能的访问。Servlet上下文API用于设置应用程序中所有Servlet共有的信息。Servlet可能需要共享他们之间的共有信息。运行于同一服务器的Servlet有时会共享资源,如JSP页面、文件和其他Servlet。


举例:

地区信息等,全国的省市县市固定的,所有我们就可以服务器启动的时候,我们就将数据放入servletContext中,避免多次请求数据库。



三者的区别:


其实学习前最好先学习Servlet,
是在Servlet基础上发展而来的,jsp也是一种特殊的servlet。
其application对象在Servlet中是ServletContext的实例对象,
可以在你写的Servlet中通过this.getServletContext();方法来获取一个ServletContext实例对象.
比如:
 this.getServletContext().setAttribute("users",userList);

然后在显示层调用还是使用application.getAttribute("users");
来实现.

所以全局变量在servlet中叫ServletContext;在jsp中叫application;而application在EL表达式中叫:applicationScope 。