blog » Java/J2EE » JSP的application对象总结

JSP的application对象总结

application对象是一个特别重要的JSP对象,它存在于服务器的内存空间中,服务器一旦启动,就会自动产生一个application对象,除非服务器被关闭,否则这个application对象将一直保持下去。在application对象的生命周期中,在当前服务器上运行的每一个JSP程序都可以任意存取和这个application对象绑定的参数(或者Java对象)的值。

application对象的这些特性为我们在多个JSP程序中、多个用户共享某些全局信息(如当前的在线人数等)提供了方便。由此我们可以不借助数据库就实现聊天室的功能。

application对象其实是实现javax.servlet.ServletContext接口的类的实例对象,那么我们具体如何获得application对象呢?有以下几种方法。

1)在JSP程序中直接使用application以代表application对象<%application.Method(); %>
2)使用ServletConfig接口
使用ServletConfig接口可以间接获取application对象,但是这个application对象的名字不能同样为application,因为application是JSP引擎创建的默认的application对象的副本,不能够被覆盖。使用ServletConfig接口其实就是使用config对象,config对象是实现ServletConfig接口的类的实例对象,它可以通过调用getServletContext()方法返回一个ServletContext接口的对象,也就是application对象的一个副本,如程序4-3所示。

【程序4-3】createApp1.jsp

<%@ page language="java"import="java.util.*"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<body>
<%
ServletContext app=config. getServletContext();
out.println(app.getServerInfo());09 %>
</body>
</html>

程序4-3首先创建了一个application对象的拷贝app,然后使用getServletInfo()方法获取服务器的相关信息,该程序的运行效果如图4-4所示。

图4-4 createApp1.jsp程序的运行效果

3)使用pageContext对象获取application对象pageContext对象的getServletContext()方法同样可以返回一个application对象的副本,

如程序4-4所示。

【程序4-4】createApp2.jsp

<%@ page language="java"import="java.util.*"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
<body>
<%
ServletContext app= pageContext. getServletContext();
out.println(app.getServerInfo());
%>
</body>
</html>

程序4-4的运行效果如图4-5所示,我们从图中可以发现,与程序4-3的运行效果是相同的。

图4-5 createApp2.jsp程序的运行效果

在JSP服务器的运行过程中,仅有一个application对象,application对象是由服务器创建的,由服务器自动清除它,不能被用户创建,用户也不能清除application对象,我们只能创建这个application对象的同步副本。application就是由JSP引擎自动创建的第一个application对象的同步副本。特别需要注意的是这些副本是同步的,任何一个副本上发生的变化都会影响到其他的副本。

This post has already been read 716 times!

Related posts

RSS 2.0 | leave a response | trackback

发表评论