`
InsistentToLove
  • 浏览: 4597 次
  • 性别: Icon_minigender_2
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

jsp内置对象值application

阅读更多
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
01        <%@ page language="java" import="java.util.*"

02            pageEncoding="ISO-8859-1"%>

03        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

04        <html>

05        <body>

06        <%

07            ServletContext app=config. getServletContext();

08            out.println(app.getServerInfo());

09        %>

10        </body>

11        </html>

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



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

3)使用pageContext对象获取application对象pageContext对象的getServletContext()方法同样可以返回一个application对象的副本,如程序4-4所示。

【程序4-4】createApp2.jsp
01        <%@ page language="java" import="java.util.*"

02            pageEncoding="ISO-8859-1"%>

03        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

04        <html>

05        <body>

06        <%

07            ServletContext app= pageContext. getServletContext();

08            out.println(app.getServerInfo());

09        %>

10        </body>

11        </html>

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



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


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


1)getAttribute(String name)当我们创建application对象的同步副本后,就可以存取和application对象绑定在一起的参数或者Java语言中的类的对象,因为application对象的生命周期是贯穿服务器的运行周期,因此,这些参数或者Java对象既然和application对象绑定在一起,那么它们的生命周期也应该和application对象一样,除非使用application对象的方法去绑定它或者使它和application对象解除绑定。使用getAttribute()方法可以返回那些和当前application对象绑定在一起的值或者Java对象。getAttribute()方法的参数name指定了目标参数或者目标Java对象的名字。

getAttribute()方法的使用方法如下:

<%

    String username=(String)application. getAttribute (“username”);

    out.println(username);

%>

2)getAttributeNames()该方法可以返回所有与当前application对象绑定在一起的参数或者Java对象的名字。这个方法的返回值是一个枚举对象(Enumeration)。它的使用方法如下:

<%

    Enumeration enum1=application.getAttributeNames();

    while(enum1.hasMoreElements())

    {

        String attrName=(String)enum1.nextElement();

        out.println(attrName+”<br>”);

    }

%>

3)getServerInfo()该方法可以获得当前服务器的详细信息,不同的服务器返回的信息格式不一样。在后面列出的程序范例中,getServerInfo()方法还将会被使用多次,这里我们暂不做详细解释。

4)setAttribute(String name, Object object)该方法通常和getAttribute()方法及removeAttribute()方法搭配使用,它的作用就是将某个参数或者Java对象与application对象绑定在一起,在setAttribute()方法中,参数name指定和application对象绑定的参数或者Java对象的名称,参数object指定需要绑定的值,object必须是一个Java对象,例如Integer对象,但不能够是int类型的数据。如果在绑定新值时,已经有同名的参数或者Java对象和application对象绑定了,那么新值将会覆盖旧值。

setAttribute()方法的使用方法如下。

l        将某个字符串参数和application对象绑定在一起:
<%

    String username=”george”;

    String password=”george”;

    application.setAttribute(“username”,username);

    application.setAttribute(“password”, password);

    out.println(application.getAttribute(“username”+”<br>”));

    out.println(application.getAttribute(“password”));

%>

l        将某个Java对象和application对象绑定在一起:
<%

    Vector vector=new Vector();

    //init this vector

    application.setAttribute(“vector”, vector);

    Vector newVector=(Vector) application.getAttribute(“vector”);

    //user newVector…

%>

5)removeAttribute(String name)通过该方法,我们可以使某个参数或Java对象与application对象解除绑定关系。一旦绑定关系被解除,我们就不能使用getAttribute()方法获取它们的值了,否则,将会返回null值。

它的使用方法如下:

<%

    String username=”george”;

    application.setAttribute(“username”,username);

    out.println(application.getAttribute(“username”));

    application.removeAttribute(“username”);

    out.println(application.getAttribute(“username”));

%>

6)log(String msg)

该方法用于往服务器的log文件中写入信息,至于是哪一个log文件,则由服务器来决定。利用这个方法,我们可以在log文件中记录访问者的信息,这对于统计访问流量来源方面十分有用,同时也便于管理员监控网站的运行情况。其实,还有一个同名但使用不同参数的log()方法,利用后者,我们可以将JSP程序执行过程中所发生的错误事件都记入log文件中。


在大部分的服务器中我们可以使用application.Method(…),但在有些较旧版本的服务器中,它们不支持application的形式,但它们支持以getServletContext().Method(…)的形式实现application对象的功能,读者一定要多加留心。


接下来,我们通过几个完整的例子向读者展示如何使用application对象的方法,首先来看看程序4-5。

【程序4-5】application.jsp
01        <%@ page language="java" import="java.util.*"

02            pageEncoding="ISO-8859-1"%>

03        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

04        <html>

05        <body>

06        <%

07            String username1="george";

08            String username2="robin";

09            String password1="george";

10            String password2="robin";

11        

12            out.println("set application attribute <br>");

13            application.setAttribute("username1",username1);

14            application.setAttribute("username2",username2);

15            application.setAttribute("password1", password1);

16            application.setAttribute("password2", password2);

17        

18            out.println("list application attribute: <br>");

19            Enumeration enum1=application.getAttributeNames();

20        

21            while(enum1.hasMoreElements()){

22                String attrName=(String)enum1.nextElement();

23        

24                if(attrName.equals("username1")||attrName.equals("username2")||

25                    attrName.equals("password1")||attrName.equals("password2")){

26                  out.println(attrName+"----->");

27                  String attrValue=

28                        application.getAttribute(attrName).toString();

29                  out.println(attrValue+"<br>");

30                }

31            }

32        

33            username1="robin";

34            password1="robin";

35        

36            out.println("change application attribute:<br>");

37            application.setAttribute("username1",username1);

38            application.setAttribute("password1", password1);

39        

40            out.println("username1----->"+application.getAttribute("username1")+

41            "<br>");

42            out.println("password1----->"+application.getAttribute("password1")+

43            "<br>");

44        

45            out.println("remove application attribute:<br>");

46            application. removeAttribute("username1");

47            application. removeAttribute("password1");

48        

49            out.println("relist application attribute: <br>");

50            Enumeration enum2=application.getAttributeNames();

51        

52            while(enum2.hasMoreElements()){

53                String attrName=(String)enum2.nextElement();

54        

55                if(attrName.equals("username1")||

56                    attrName.equals("username2")||

57                    attrName.equals("password1")||

58                    attrName.equals("password2")){

59                    out.println(attrName+"----->");

60                    String attrValue=

61                        application.getAttribute(attrName).toString();

62                    out.println(attrValue+"<br>");

63                }

64            }

65        %>

66        </body>

67        </html>

程序4-5的流程如下:首先使用setAttribute()方法把4个参数和application对象绑定在一起,然后使用getAttributeNames()方法和getAttribute()方法获取它们的值。接下来再次使用setAttribute()方法,把其中两个参数的值用新值覆盖。然后调用removeAttribute()方法把这两个参数和application对象解除绑定。最后又使用getAttributeNames()方法和getAttribute()方法列出所有的参数名和参数值。

为了演示setAttribute()方法、getAttribute()方法和removeAttribute()方法的使用,我们把这些代码都集中在同一个JSP程序中,其实,也可以把程序4-5分为几个小程序,分别运行,结果是一样的。

程序4-5的运行效果如图4-6所示。



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

下面的程序4-6和程序4-7分别演示了如何使用application对象存取Java对象。

【程序4-6】storeVector.jsp
01        <%@ page language="java" import="java.util.*"

02            pageEncoding="ISO-8859-1"%>

03        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

04        <html>

05        <body>

06        <%

07            vector vector=new Vector();

08            vector.add(“george1”);

09            vector.add(“george2”);

10            vector.add(“george3”);

11            vector.add(“george4”);

12            vector.add(“george5”);

13            application.setAttribute(“vector”, vector);

14        %>

15        </body>

16        </html>

【程序4-7】getVector.jsp
01        <%@ page language="java" import="java.util.*"

02            pageEncoding="ISO-8859-1"%>

03        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

04        <html>

05        <body>

06        <%

07            Vector vector= (Vector)application.getAttribute(“vector”);

08        

09            for(int i=0;i<vector.size();i++) {

10                out.println(i+”----->”);

11                out.println(vector.elementAt(vector.size()-i-1).toString());

12                out.println(”<br>”);

13            }

14        %>

15        </body>

16         </html>

在程序4-6中,首先创建了一个Vector对象(vector),并且为其添加了5个元素,然后使用setAttribute()方法将它和application对象绑定在一起。在程序4-7中,首先从application对象中获取这个Vector对象,并且逆序将它所含有的元素输出。程序4-7运行的效果如图4[/size]
分享到:
评论

相关推荐

    JSP内置对象 session application的应用

    JSP内置对象session和application的应用 JSP(Java Server Pages)是一种服务器端脚本语言,用于生成动态网页。JSP内置对象是JSP提供的一些预定义对象,通过这些对象,可以访问和操作服务器端的资源。其中,session...

    JSP 内置对象:application 对象.pptx

    **JSP内置对象:Application对象** 在Java Server Pages (JSP) 技术中,内置对象是预定义的对象,可以直接在JSP页面中使用,无需显式声明或实例化。这些对象提供了对服务器功能和环境的便捷访问。其中,`...

    Jsp九大内置对象,request,session,application

    熟练使用这些内置对象是开发JSP应用程序的基本要求,尤其是对于request、session和application对象更是必须要掌握的。 会使用对象所具有的方法,能熟练使用每一种对象的几种常用方法。希望对大家有用。。。

    JSP内置对象归纳与总结

    JSP内置对象归纳与总结 JSP提供了九个内置对象,分别是out对象、request对象、response对象、session对象、application对象、pageContext对象、exception对象、config对象和page对象。这些内置对象是由容器实现和...

    JSP内置对象pdf

    JSP内置对象是JSP技术中的基础知识点,了解和掌握这些内置对象的用法对于开发基于JSP的Web应用至关重要。通过这些内置对象,开发人员可以更加方便地处理HTTP请求和响应、管理用户会话、存储应用范围内的数据等,从而...

    JSP内置对象方法介绍示例

    在压缩包文件"JSP内置对象"中,可能包含了关于这些对象的详细解释、代码示例以及使用场景分析,可以帮助读者更深入地理解和掌握JSP内置对象的使用。通过阅读和实践其中的内容,开发者可以提升自己的JSP编程能力,为...

    jsp内置对象讲解及实例

    **JSP内置对象讲解** JSP(JavaServer Pages)是一种基于Java的技术,用于创建动态网页。在JSP中,有九个内置对象,它们是由服务器自动创建并提供给每个请求的JSP页面,无需显式声明。这些内置对象极大地简化了开发...

    jsp内置对象一些实验题

    JSP内置对象实验题 JSP(Java Server Pages)是一种基于Java技术的服务器端脚本语言,主要用于Web应用程序的开发。JSP提供了一些内置对象,帮助开发者快速构建Web应用程序。这些内置对象包括request、response、...

    第四单元 JSP内置对象.pdf

    ### 第四单元 JSP内置对象 #### 一、概述 JSP(Java Server Pages)是一种动态网页技术标准,它将动态代码嵌入到静态HTML页面中。通过这种方式,开发者能够轻松地创建动态网页内容。JSP内置对象是JSP技术为简化...

    jsp内置对象的使用

    **正文** 在Java Server Pages(JSP)技术中,...理解并熟练运用JSP内置对象,能帮助开发者更高效地构建动态网页应用程序。在学习过程中,不断实践和探索,才能更好地掌握这些对象的功能和用法,从而提升开发技能。

    jsp内置对象ppt

    jsp内置对象是jsp语言关键的部分 有application,session等

    实验三 JSP内置对象使用

    【实验三 JSP内置对象使用】 实验的目的是让学生熟悉并理解JSP中的几个核心内置对象,包括request、response、session、application以及out对象。这些对象是JSP中用于处理HTTP请求、响应、会话管理和输出数据的关键...

    原生jsp进行Web编程—作业3-JSP内置对象-Part2

    一、JSP内置对象练习 1、使用JSP中的session对象,实现用户登陆检验 (1)(1)web目录下的session-login目录中,新建login.jsp(允许用户输入用户名和密码), 在usercheck.jsp中进行验证,成功则显示index.jsp...

    jsp九大内置对象讲解

    JSP九大内置对象详解 JSP(Java Server Pages)是一种基于Java技术的服务器端编程语言,用于创建动态网页。JSP九大内置对象是JSP技术中非常重要的一部分,它们是JSP引擎提供的一些预定义的对象,用于帮助开发者快速...

    JSP应用开发-JSP内置对象.pptx

    JSP内置对象有多种,包括request对象、response对象、session对象、application对象、out对象、config对象、pageContext对象、page对象等。 1. request对象 request对象是从客户端向服务器端发出请求,包括用户...

    jsp内置对象聊天系统

    `jsp内置对象聊天系统`是一个基于JavaServer Pages(JSP)技术构建的简易聊天应用程序。在JSP中,内置对象是预定义的对象,可以直接在页面上使用,无需显式实例化,大大简化了开发流程。这个系统利用了JSP的内置对象...

    JSP内置对象及四种作用域

    在JavaServer Pages (JSP) 技术中,内置对象是预定义的变量,可以直接在JSP页面中使用,无需显式声明。这些内置对象极大地简化了开发过程,提供了与服务器交互的不同方式。本篇文章将深入探讨JSP的内置对象之一——`...

    jsp内置对象课件,维护对象和增加和删除对象属性

    【JSP内置对象】是Java Server Pages(JSP)技术的核心组成部分,它们是JSP页面中预先定义并可以直接使用的对象,无需程序员显式创建。这些内置对象的存在极大地方便了开发人员处理各种Web应用程序的任务,提高了...

Global site tag (gtag.js) - Google Analytics