首页 > 编程笔记 > Java笔记 阅读:30

JSP application对象的用法(附带实例)

JSP 技术中,使用 session 内置对象来存储每个用户的私有信息。但是,有时候服务器需要管理面向整个应用的参数,使每个用户都能获得相同的参数值,这时就需要用到 application 内置对象了。

application 是 JSP 技术提供的一个内置对象,对服务器而言,application 可以视为一个所有联机用户共享的数据存取区。application 内置对象中的变量数据在程序设置其值时被初始化,而当 Web 服务器被关闭,或者超过预设时间而未有任何用户联机时自动消失。

对每一个联机浏览网页的用户来说,application 内置对象用于存储其共享的数据,对于网站中任何一个页面,用户存取的数据内容均相同,可以将其视为传统应用程序中的全局共享变量。

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 查看用户历史留言的页面效果

相关文章