<span style="font-family: 'Comic Sans MS'; ">1、Application对象</span>
<1> 该对象在服务器端是全局作用域,作用在整个web应用中,负责提供应用程序在服务器端所需的全局信息。声明周期:服务器启动后产生,服务器关闭后消失。当客户在访问的网站各个页面来回切换浏览时,application对象只有一个,并且在整个服务器运行web应用期间,application被所有的用户共享。
<2>该对象继承javax.servlet.ServletContext,本质上就是ServletContext类的实例对象,只不过在servlet中,经常用ServletContext类的对象(不一定是application)来操作ServletContext域中的方法和字段;而在前端jsp页面上习惯用application对象来获取或设置相关的信息。application对象与ServletContext实例对象本质一样,只不过作用的范围域不一样,一个在jsp范围,一个在servlet范围。
<3>该对象的应用实例:页面访问计数器
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'counter.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
//若首次访问时,则设置为1
if(application.getAttribute("counter") == null){
application.setAttribute("counter","1");
}else
{
String strNum = application.getAttribute("counter").toString();
int count = Integer.parseInt(strNum);
//int count = Integer.valueOf(strNum).intValue();
count++;
application.setAttribute("counter",Integer.toString(count));//后一个参数为object类,需转化为string类
}
%>
您是第<%=application.getAttribute("counter") %>位访问者!
</body>
</html>