JSP application对象详解

application是应用程序对象,当Web服务器启动时,Web服务器会自动创建一个application对象。application对象一旦创建,它将一直存在,直到Web服务器关闭。

生命周期

一个Web应用程序启动后,将会自动创建一个application对象,而且在整个应用程序的运行过程中只有一个application对象,也即所有访问该网站的客户都共享一个application对象。

它的生命周期从Web服务器启动,直到Web服务器关闭。

application的存活范围比request和session都要大。只要服务器没有关闭,application对象中的数据就会一直存在,在整个服务器的运行过程当中,application对象只有一个,它会被所有的用户共享。

作用范围

application对象是一个应用程序级的对象,它作用于当前Web应用程序,也即作用于当前网站,所有访问当前网站的客户都共享一个application对象。不管哪个客户来访问网站A,也不管客户访问网站A下哪个页面文件,都可以对网站A的application对象进行操作,因为,所有访问网站A的客户都共用一个application对象。当在application对象中存储数据后,所有访问网站A的客户都能够对其进行访问,实现了多客户之间的数据共享。

方法

String getAttribute(String name) 根据属性名称获取属性值。
Enumeration getAttributeNames() 获取所有的属性名称。
void setAttribute(String name, Object object) 设置属性,指定属性名称和属性值。
void removeAttribute(String name) 根据属性名称删除对应的属性。
ServletContext getContext(String uripath) 获取指定URL的ServletContext对象。
String getContextPath() 获取当前Web应用程序的根目录。
String getInitParameter(String name) 根据初始化参数名称,获取初始化参数值。
int getMajorVersion() 获取Servlet API的主版本号。
int getMinorVersion() 获取Servlet API的次版本号。
String getMimeType(String file) 获取指定文件的MIME 类型。
String getServletInfo() 获取当前Web服务器的版本信息。
String getServletContextName() 获取当前Web应用程序的名称。
void log(String message) 将信息写入日志文件中。

例子

统计网站的访问量

<%@ page import="java.util.*" contentType="text/html;charset=UTF-8"%>  
<%! int numbers = 0;%>  
<%! public synchronized void countPeople(){  
        numbers++;  
}%>  
<%  
        if(session.isNew()){  
                countPeople();  
                String str = String.valueOf(numbers);  
                session.setAttribute("count",str);  
        }  
        application.setAttribute(session.getId(),Integer.toString(numbers));  
        Enumeration e = application.getAttributeNames();  
        while(e.hasMoreElements()){  
                out.println(e.nextElement().toString()+"<br>");  
        }  
%>  
  
<html>  
        你的sessionID为<%=session.getId()%>  
        你是第<%=(String)session.getAttribute("count")%>个访问本站的人。  
</html>

总结

application对象是应用程序级的对象,一个Web应用程序一个application对象,每个Web应用程序的application对象不同,但一个Web应用程序的多个用户之间共享同一个application对象。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。