上QQ阅读APP看书,第一时间看更新
4.4 application对象
application对象实现接口javax.servlet.ServletContext。它的生命周期是从application对象创建到应用服务器关闭,也就是说当服务器关闭application对象才消失。可以将它视为Web应用的全局变量,当服务器运行时有效,如果关闭服务器,其中保存的信息也都消失了。
4.4.1 application对象的常用方法
application对象的常用方法参见表4.5。
表4.5 application对象的常用方法
4.4.2 获取指定页面的路径
【例4.9】获取指定页的实际路径、相对路径和当前应用程序路径
application.jsp是指定页输出其所在的实际路径和相对路径,其源代码如下:
-----------------application.jsp---------------- 01 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 02 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 03 <html> 04 <head> 05 <title>My JSP 'application.jsp' starting page</title> 06 </head> 07 <body> 08 <h3>指定页的实际路径、相对路径和当前应用程序路径</h3> 09 <hr/> 10 <table border="1" bordercolor="black"> 11 <tr> 12 <td>当前服务器的名称和版本</td> 13 <td><%=application.getServerInfo() %></td> 14 </tr> 15 <tr> 16 <td>页面application.jsp的实际路径</td> 17 <td><%=application.getRealPath("application.jsp") %></td> 18 </tr> 19 <tr> 20 <td>页面application.jsp的URL</td> 21 <td><%=application.getResource("application.jsp") %></td> 22 </tr> 23 <tr> 24 <td>当前Web程序的路径</td> 25 <td><%=application.getContextPath() %></td> 26 </tr> 27 </table> 28 </body> 29 </html>
上述代码中,第11~25行分别输出application中指定页的实际路径、相对路径和当前应用程序路径等信息。页面效果如图4.18所示。
图4.18 application.jsp运行结果
4.4.3 设计一个网站计数器
application对象还可以保存访问网站的人数,也就是常说的网站计数器,下面通过一个例子来演示。
【例4.10】网站计数器
applicationCount.jsp是网站计数器页面,其源代码如下:
----------------- applicationCount.jsp---------------- 01 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 02 <% 03 Integer count =(Integer) application.getAttribute("count"); 04 if(count==null){ 05 count=1; 06 }else{ 07 count++; 08 } 09 application.setAttribute("count", count); 10 %> 11 12 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 13 <html> 14 <head> 15 <title>网站计数器</title> 16 </head> 17 <body> 18 欢迎访问本网站,您是第<%=count %>位访问客户! 19 </body> 20 </html>
【代码解析】
第02~09行代码从页面中获得计数值,如果为空则设定初始值为1,如果有则加1。程序运行结果如图4.19所示。
图4.19 网站计数器
提示
application对象在Web应用的运行时是一直存在于服务器中的,因此保存这种全局变量相对来说比较占用资源,因此不被推荐使用。在实际的开发中,一般都是让对象存在于必要的时间中,否则当访问量加剧时,会造成内存不足等情况。