【问题标题】:What are implicit objects? What does it mean?什么是隐式对象?这是什么意思?
【发布时间】:2011-01-07 23:16:06
【问题描述】:

每当我研究 JSP 和 Servlet 时,我都会遇到隐式对象这个词,这个词是什么意思?

如何在我的程序中调用它们而不实例化对象?谁实例化隐式对象?请详细说明。

谢谢

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    那些是已经被 servlet 容器放置在作用域中的对象,以便可以被 EL(表达式语言)访问,例如 PageContextHttpServletRequest#getParameter()HttpServletRequest#getHeader() 等。这些只是为了方便,因此您不需要使用老式的 scriptlet 来获取它们。

    所以而不是例如

    <%= pageContext.getSession().getMaxInactiveInterval() %><br>
    <%= request.getParameter("foo") %><br>
    <%= request.getHeader("user-agent") %><br>
    <%  for (Cookie cookie : request.getCookies()) { // Watch out with NPE!
            if (cookie.getName().equals("foo")) {
                out.write(cookie.getValue());
            }
        }
    %><br>
    

    你可以这样做

    ${pageContext.session.maxInactiveInterval}<br>
    ${param.foo}<br>
    ${header['user-agent']}<br>
    ${cookie.foo}<br>
    

    您会看到它们遵循要访问的 JavaBean 约定(即,您可以通过 JavaBean 方式调用 getter)。你看我使用大括号符号[] 来得到user-agent,那是因为- 是EL 中的保留字符,所以${header.user-agent} 不起作用,它会尝试返回结果request.getHeader("user") - pageContext.findAttribute("agent") 这显然行不通。

    有关它们的概述,请查看 Java EE 教程中的 Implicit Objects 章节。

    【讨论】:

      【解决方案2】:

      JSP 中的隐式对象是 由创建的对象 容器自动和 容器使它们可供 开发商,开发商不 需要明确地创建它们。自从 这些对象被创建 由容器自动执行,并且是 使用标准变量访问; 因此,它们被称为隐式 对象。

      隐式对象由 容器并插入 生成的 servlet 代码。他们是 仅在 jspService 中可用 方法而不是在任何声明中。 隐式对象用于 不同的目的。我们自己的方法 (用户定义的方法)无法访问 他们是服务的本地人 方法并在 jsp到a的转换时间 小服务程序。但我们可以将它们传递给我们的 如果我们想使用他们自己的方法 在这些函数中本地化。

      来源:roseindia.net

      【讨论】:

        【解决方案3】:

        JSP 隐式对象是 JSP 容器在每个页面中提供给开发人员的 Java 对象,开发人员可以直接调用它们而无需显式声明。 JSP 隐式对象也称为预定义变量。

        JSP 支持九种下面列出的隐式对象:

        • request :这是与请求关联的 HttpServletRequest 对象。
        • response :这是与对客户端的响应相关联的 HttpServletResponse 对象。
        • out :这是用于将任何数据写入缓冲区的 PrintWriter 对象。
        • session :这是与请求关联的 HttpSession 对象。
        • application :这是与应用程序上下文关联的 ServletContext 对象。
        • config :这是与页面关联的 ServletConfig 对象。
        • pageContext :这封装了服务器特定功能的使用,例如更高性能的 JspWriters。
        • page :这只是 this 的同义词,用于调用翻译后的 servlet 类定义的方法。
        • Exception:Exception对象允许指定JSP访问异常数据。

        【讨论】:

          【解决方案4】:

          隐式对象是 JSP 容器在每个页面中为开发人员提供的一组 Java 对象。这些对象可以通过脚本元素作为内置变量访问,也可以通过 JavaBeans 和 Servlet 以编程方式访问。

          有关详细概述和使用,请参阅下面的页面。

          http://www.gulland.com/courses/JavaServerPages/jsp_objects.jsp

          【讨论】:

            【解决方案5】:

            隐式对象是自动创建的,可供您使用。您不能使用这些对象创建具有相同名称的其他变量。

            【讨论】:

            • 错了。您确实可以创建具有相同名称的变量。但是,您必须定义范围。例如,请求范围。话虽如此,不应该为了不好的做法而创建具有隐式对象名称的变量。
            【解决方案6】:

            JSP隐式对象是由容器在将JSP页面翻译成Servlet源时创建的,以帮助开发者

            【讨论】:

              【解决方案7】:

              隐式对象有九种类型,隐式对象也称为预定义变量。
              1) 请求
              2) 响应
              3) 应用
              4) 会话
              5) 页面
              6) 页面上下文
              7) 出
              8) 异常
              9) 配置

              【讨论】:

                猜你喜欢
                • 2011-06-12
                相关资源
                最近更新 更多