原文: https://beginnersbook.com/2013/11/jsp-implicit-object-application-with-examples/

    Application隐式对象是javax.servlet.ServletContext的一个实例。它主要用于获取初始化参数和共享属性和它们在整个 JSP 应用中的值,这意味着application隐式对象设置的任何属性都可用于所有 JSP 页面。

    方法:

    • Object getAttribute(String attributeName)
    • void setAttribute(String attributeName, Object object)
    • void removeAttribute(String objectName)
    • Enumeration getAttributeNames()
    • String getInitParameter(String paramname)
    • Enumeration getInitParameterNames()
    • String getRealPath(String value)
    • void log(String message)
    • URL getResource(String value)
    • InputStream getResourceAsStream(String path)
    • String getServerInfo()
    • String getMajorVersion()
    • String getMinorVersion()
    1. Object getAttribute(String attributeName):它返回存储在给定属性名称中的对象。例如,下面的语句将返回存储在属性"MyAttr"中的对象。
      1. String s = (String)application.getAttribute("MyAttr");
    1. void setAttribute(String attributeName, Object object):它设置属性的值,或者换句话说,它将属性及其值存储在应用程序上下文中,可在整个 JSP 应用程序中使用。示例 –
      1. application.setAttribute(“MyAttribute”, “This is the value of Attribute”);


    上面的语句将存储属性及其值。如果我们在任何 JSP 页面中使用以下语句,那么's'的值是多少?

    1. String s= (String) application.getAttribute(“MyAttribute”);


    字符串的值将是"This is the value of Attribute",因为我们使用setAttribute方法设置它。

    1. void removeAttribute(String objectName):此方法用于从应用中删除给定属性。对于例如 - 它将从应用中删除属性"MyAttr"。如果我们尝试使用getAttribute方法获取已删除属性的值,则它将返回Null
      1. application.removeAttribute(“MyAttr”);
    1. Enumeration getAttributeNames():此方法返回存储在application隐式对象中的所有属性名称的枚举。
      1. Enumeration e= application.getAttributeNames();
    1. String getInitParameter(String paramname):它返回给定参数名称的Initialization参数的值。示例web.xml
      1. <web-app>
      2. <context-param>
      3. <param-name>parameter1</param-name>
      4. <param-value>ValueOfParameter1</param-value>
      5. </context-param>
      6. </web-app>


    假设上面是我的web.xml文件

    1. String s=application.getInitParameter(“parameter1”);


    s的值将是ValueOfParameter1。仍然困惑它来自哪里?请参阅web.xml文件中的param-value标签。

    1. Enumeration getInitParameterNames():它返回所有Initialization参数的枚举。
      1. Enumeration e= application.getinitParameterNames();
    1. String getRealPath(String value):它将给定路径转换为文件系统中的绝对路径。
      1. String abspath = application.getRealPath(“/index.html”);


    abspath的值将是基于现有文件系统的完整 HTTP URL。

    1. void log(String message):此方法将给定消息写入与该应用程序关联的 JSP 引擎(JSP 容器)的默认日志文件。
      1. application.log(“This is error 404 Page not found”);


    上面的调用会将消息"This is error 404 Page not found"写入默认日志文件。

    1. String getServerInfo():此方法返回 JSP 容器(JSP 引擎)的名称和版本。
      1. application.getServerInfo();

    application隐式对象示例

    一个 JSP 页面,用于捕获使用应用的命中数。在此示例中,我们使用application隐式对象计算 JSP 页面的命中数。

    counter.jsp

    1. <%@ page import="java.io.*,java.util.*" %>
    2. <html>
    3. <head>
    4. <title>Application Implicit Object Example</title>
    5. </head>
    6. <body>
    7. <%
    8. //Comment: This would return null for the first time
    9. Integer counter= (Integer)application.getAttribute("numberOfVisits");
    10. if( counter ==null || counter == 0 ){
    11. //Comment: For the very first Visitor
    12. counter = 1;
    13. }else{
    14. //Comment: For Others
    15. counter = counter+ 1;
    16. }
    17. application.setAttribute("numberOfVisits", counter);
    18. %>
    19. <h3>Total number of hits to this Page is: <%= counter%></h3>
    20. </body>
    21. </html>

    输出截图

    首次访问者的点击次数为 1。

    JSP 中的`application`隐式对象 - 图1

    刷新页面时,点击次数增加了。

    JSP 中的`application`隐式对象 - 图2

    如果您喜欢该教程,请在 Facebook 和 Google+ 上与您的朋友分享。