gpt4 book ai didi

jsp - <%= foo %> 和 ${ foo } 之间的区别

转载 作者:行者123 更新时间:2023-12-02 00:45:31 24 4
gpt4 key购买 nike

第一次在 JSP 中编码,我需要将变量的值呈现为 HTML。看起来有多种方法可以做到这一点;它们之间有什么区别(假设我有一个名为 foo 的变量)?

<%= foo %>

${ foo }

最佳答案

这使用了老式的输出scriptlet,即 discouraged since a decade ,

<%= foo %>

与常规 scriptlet 中的以下内容基本相同:

<% out.println(foo); %>

这与普通 Java servlet 类中的以下内容基本相同(您可能已经知道,JSP 最终会被编译并转换为 servlet 类):

response.getWriter().println(foo);

其中 foo 因此被声明为本地/实例变量。因此,它将本地/实例变量 foo 打印到 HTTP 响应中声明的位置。

<小时/>

这个,使用 expression language (EL) ,这是自 2003 年 JSP 2.0 以来推荐的方法,

${ foo }

与常规 scriptlet 中的以下内容基本相同,其中 PageContext#findAttribute() :

<% 
Object foo = pageContext.findAttribute("foo");
if (foo != null) out.println(foo);
%>

这又相当于:

<% 
Object foo = pageContext.getAttribute("foo");
if (foo == null) foo = request.getAttribute("foo");
if (foo == null) foo = session.getAttribute("foo");
if (foo == null) foo = application.getAttribute("foo");
if (foo != null) out.println(foo);
%>

因此,它将页面/请求/ session /应用程序范围中属性的第一个非空出现打印到响应中声明的位置。如果没有,则不打印任何内容。请注意,当它为 null 时,它不会打印“null”的文字字符串,这与 scriptlet 的做法相反。

关于jsp - <%= foo %> 和 ${ foo } 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19116289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com