首先分别说说三者是什么:
①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 。