JSP application对象的用法(附带实例)
在 JSP 技术中,使用 session 内置对象来存储每个用户的私有信息。但是,有时候服务器需要管理面向整个应用的参数,使每个用户都能获得相同的参数值,这时就需要用到 application 内置对象了。
application 是 JSP 技术提供的一个内置对象,对服务器而言,application 可以视为一个所有联机用户共享的数据存取区。application 内置对象中的变量数据在程序设置其值时被初始化,而当 Web 服务器被关闭,或者超过预设时间而未有任何用户联机时自动消失。
对每一个联机浏览网页的用户来说,application 内置对象用于存储其共享的数据,对于网站中任何一个页面,用户存取的数据内容均相同,可以将其视为传统应用程序中的全局共享变量。
application 内置对象的常用方法如下表所示:
【实例】利用 application 内置对象,实现共享留言板的信息。
本例在 inputMessage.jsp 页面中通过表单呈现出留言板,并收集用户填写的内容。
在 checkMessage.jsp 页面中,接收表单中传递过来的信息并加以处理。通过 application 内置对象中的 setAttribute(String name) 方法将用户填写的信息存入相应的全局变量。
在 showMessage.jsp 页面中,通过 application 内置对象中的 getAttribute(String name) 方法获取全局变量的值,并以适当的形式显示出来。
inputMessage.jsp 页面的代码如下:
checkMessage.jsp 页面的代码如下:
showMessage.jsp 页面的代码如下:

图 1 运行inputMessage.jsp页面的效果
用户填写相应的留言信息后,单击“留言”按钮,则会将信息传送至 checkMessage.jsp 页面,并显示留言成功,页面效果如下图所示:

图 2 留言成功的页面效果
单击“返回留言板”链接,就会通过链接返回留言板界面(inputMessage.jsp 页面)。在 inputMessage.jsp 页面中单击“查看留言板”按钮,则可以查看所有用户的历史留言,页面效果如下图所示:

图 3 查看用户历史留言的页面效果
application 是 JSP 技术提供的一个内置对象,对服务器而言,application 可以视为一个所有联机用户共享的数据存取区。application 内置对象中的变量数据在程序设置其值时被初始化,而当 Web 服务器被关闭,或者超过预设时间而未有任何用户联机时自动消失。
对每一个联机浏览网页的用户来说,application 内置对象用于存储其共享的数据,对于网站中任何一个页面,用户存取的数据内容均相同,可以将其视为传统应用程序中的全局共享变量。
application 内置对象的常用方法如下表所示:
| 方法 | 说明 |
|---|---|
| setAttribute(String name, Object obj) | 在 application 中设定 name 所指定的属性值为 obj |
| getAttribute(String name) | 返回 application 中 name 所指定的属性值 |
| getAttributeNames() | 返回 application 中所有变量的名称 |
| removeAttribute(String name) | 删除 application 中 name 所指定的属性 |
| getMajorVersion() | 返回服务器解释引擎所支持的最新 Servlet API 版本 |
| getMinorVersion() | 返回服务器解释引擎所支持的最低 Servlet API 版本 |
| getMimeType(string file) | 返回文件 file 的文件格式与编码方式 |
| getRealPath(String path) | 返回虚拟路径 path 的真实路径 |
| getServerInfo() | 返回服务器解释引擎的信息 |
application内置对象的应用
下面通过对 application 内置对象的应用的讲解,来帮助大家进一步理解该内置对象的使用。【实例】利用 application 内置对象,实现共享留言板的信息。
本例在 inputMessage.jsp 页面中通过表单呈现出留言板,并收集用户填写的内容。
在 checkMessage.jsp 页面中,接收表单中传递过来的信息并加以处理。通过 application 内置对象中的 setAttribute(String name) 方法将用户填写的信息存入相应的全局变量。
在 showMessage.jsp 页面中,通过 application 内置对象中的 getAttribute(String name) 方法获取全局变量的值,并以适当的形式显示出来。
inputMessage.jsp 页面的代码如下:
<%@page language="java" import="java.text.*,java.util.*"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用application内置对象--inputMessage.jsp</title>
<style>
#form2 input {
color: green;
font-weight: bold;
}
</style>
</head>
<body bgcolor="#abcdef">
<form action="checkMessage.jsp" method="post">
请输入姓名:<input type="text" name="name" /><br>
请输入标题:<input type="text" name="title" /><br>
请输入内容:
<textarea cols="40" rows="10" name="message"></textarea><br><br><br>
<input type="submit" value="留言" />
</form>
<br>
<form id="form2" action="showMessage.jsp" method="post">
<input type="submit" value="查看留言板" />
</form>
</body>
</html>
checkMessage.jsp 页面的代码如下:
<%@page language="java" import="java.text.*,java.util.*"
contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>使用application内置对象--checkMessage.jsp</title>
<style>
.span0 { color: red; font-weight: bold; }
.span1 { color: green; }
.span2 { color: blue; }
.span3 { color: purple; }
.span4 { color: orange; }
</style>
</head>
<body bgcolor="#abcdef">
<%! Vector<String> v = new Vector<String>();
int i = 0; %>
<%
String datetime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime());
%>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String title = request.getParameter("title");
String message = request.getParameter("message");
%>
<%
if (name == null || "".equals(name.trim())) {
name = "网友" + (int) (Math.random() * 100000 + 10000);
}
if (title == null || "".equals(title.trim())) {
title = "无";
}
if (message == null || "".equals(message.trim())) {
message = "无";
}
%>
<%
i++;
String str = "第<span class='span0'>" + i + "</span>楼 "
+ ".<span class='span1'>留言人:</span> " + name + ".<span class='span2'>标题:</span> "
+ title + ".<span class='span3'>内容:</span><br> " + message
+ ".<span class='span4'>时间:</span> " + datetime + ".<hr>";
v.add(str);
application.setAttribute("message", v);
%>
留言成功.
<a href="inputMessage.jsp">返回留言板</a>
</body>
</html>
showMessage.jsp 页面的代码如下:
<%@page import="com.sun.org.apache.xml.internal.serializer.utils.StringToIntTable"%>
<%@page language="java" import="java.util.*"
contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用application内置对象--showMessage.jsp</title>
<style>
body {
background: RGBA(38, 38, 38, 1);
}
div {
width: 800px;
border: 1px solid RGBA(100, 90, 87, 1);
color: white;
}
span {
font-size: 20px;
font-weight: bold;
}
.span0 {
color: red;
font-size: 25px;
}
.span1 {
color: green;
}
.span2 {
color: orange;
}
.span3 {
color: green;
}
.span4 {
color: red;
}
</style>
</head>
<body>
<div>
<%
Object o = application.getAttribute("message");
if (o == null) {
out.print("暂时还没有留言呢");
} else {
Vector<String> v = (Vector<String>) o;
for (int i = v.size() - 1; i >= 0; i--) {
StringTokenizer st = new StringTokenizer(v.get(i), ".");
while (st.hasMoreElements()) {
out.print(st.nextToken() + "<br>");
}
}
}
%>
</div>
</body>
</html>
运行 inputMessage.jsp 页面的效果如下图所示:
图 1 运行inputMessage.jsp页面的效果
用户填写相应的留言信息后,单击“留言”按钮,则会将信息传送至 checkMessage.jsp 页面,并显示留言成功,页面效果如下图所示:

图 2 留言成功的页面效果
单击“返回留言板”链接,就会通过链接返回留言板界面(inputMessage.jsp 页面)。在 inputMessage.jsp 页面中单击“查看留言板”按钮,则可以查看所有用户的历史留言,页面效果如下图所示:

图 3 查看用户历史留言的页面效果
ICP备案:
公安联网备案: