天天看点

Application对象

(1)application对象作用:用于保存应用程序中的公有数据,实现了多客户之间的数据共享。

(2)application对象的生命周期:从Web服务器启动,直到Web服务器关闭。

(3)application对象的作用范围:application对象是一个应用程序级的对象,它作用于当前Web应用程序,也即作用于当前网站,所有访问当前网站的客户都共享一个application对象。

(4)application对象的基类是:javax.servlet.ServletContext类。

(5)application对象的常用方法

方法名

描述

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)

将信息写入日志文件中。

实例一:使用application对象获取初始化参数

一般来说,在web.xml文件中,设置初始化参数有如下两种方式:

(1)设置系统范围内的初始化参数

       对于系统范围内的初始化参数,可通过ServletContext 接口的getInitParameter(String name)方法,根据指定的参数名,获取对应的参数值。

(2)针对单个Servlet文件或JSP文件设置初始化参数

        对于针对单个Servlet文件或JSP文件设置初始化参数,可通过ServletConfig接口的 getInitParameter(String name)方法,根据指定的参数名,获取对应的参数值。

在web.xml文件中:

<code>&lt;?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"UTF-8"</code><code>?&gt;</code>

<code>&lt;web-app version=</code><code>"2.5"</code>

<code>    </code><code>xmlns=</code><code>"http://java.sun.com/xml/ns/javaee"</code>

<code>    </code><code>xmlns:xsi=</code><code>"http://www.w3.org/2001/XMLSchema-instance"</code>

<code>    </code><code>xsi:schemaLocation="http:</code><code>//java.sun.com/xml/ns/javaee</code>

<code>    </code><code>http:</code><code>//java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;</code>

<code>  </code><code>&lt;display-name&gt;&lt;/display-name&gt;</code>

<code>  </code><code>&lt;welcome-file-list&gt;</code>

<code>    </code><code>&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;</code>

<code>  </code><code>&lt;/welcome-file-list&gt;</code>

<code>    </code><code>&lt;context-param&gt;</code>

<code>        </code><code>&lt;param-name&gt;appName&lt;/param-name&gt;</code>

<code>        </code><code>&lt;param-value&gt;MyJSP&lt;/param-value&gt;</code>

<code>    </code><code>&lt;/context-param&gt;</code>

<code>        </code><code>&lt;param-name&gt;appVersion&lt;/param-name&gt;</code>

<code>        </code><code>&lt;param-value&gt;</code><code>1.0</code><code>.</code><code>0</code><code>&lt;/param-value&gt;</code>

<code>&lt;/web-app&gt;</code>

在index.jsp文件中:

<code>&lt;%</code>

<code>    </code><code>//String appName=application.getInitParameter("appName");</code>

<code>    </code><code>//String appVersion=application.getInitParameter("appVersion");</code>

<code>    </code><code>String</code> <code>appName=getServletContext().getInitParameter(</code><code>"appName"</code><code>);</code>

<code>    </code><code>String</code> <code>appVersion=getServletContext().getInitParameter(</code><code>"appVersion"</code><code>);</code>

<code>     </code><code>%&gt;</code>

<code>应用程序的名称:&lt;%=appName%&gt;&lt;br&gt;</code>

<code>应用程序的版本:&lt;%=appVersion%&gt;</code>

输出结果:

    应用程序的名称:MyJSP

    应用程序的版本:1.0.0    

实例二:使用application对象实现网站计数器

<code>       </code><code>if</code><code>(application.getAttribute(</code><code>"counter"</code><code>) == </code><code>null</code><code>)</code>

<code>       </code><code>{</code>

<code>           </code><code>application.setAttribute(</code><code>"counter"</code><code>, </code><code>"1"</code><code>);</code>

<code>       </code><code>}</code>

<code>       </code><code>else</code>

<code>           </code><code>String</code> <code>strnum = </code><code>null</code><code>;</code>

<code>           </code><code>strnum = application.getAttribute(</code><code>"counter"</code><code>).toString();</code>

<code>           </code><code>int</code> <code>icount = </code><code>0</code><code>;</code>

<code>           </code><code>icount = Integer.valueOf(strnum).intValue();</code>

<code>           </code><code>icount++;</code>

<code>           </code><code>application.setAttribute(</code><code>"counter"</code><code>, Integer.toString(icount));</code>

<code>                                                                                                        </code> 

<code>   </code><code>%&gt;</code>

<code>                                                                                                </code> 

<code>       </code><code>您是第&lt;%=application.getAttribute(</code><code>"counter"</code><code>) %&gt;位访问者!</code>

session对象和application对象的比较

(1) 两者的作用范围不同:

session对象是用户级的对象,而application对象是应用程序级的对象。

一个用户一个session对象,每个用户的session对象不同,在用户所访问网站的多个页面之间共享同一个session对象。

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

在同一个网站下:

n每个用户的session对象不同

n所用用户的application对象相同

在不同网站下:

n每个用户的application对象不同

(2) 两者的生命周期不同:

session对象的生命周期:用户首次访问网站创建,用户离开该网站 (不一定要关闭浏览器) 消亡。

application对象的生命周期:启动Web服务器创建,关闭Web服务器销毁。

     本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1341703,如需转载请自行联系原作者