这,使用老式的输出小脚本这是十年来一直灰心丧气 https://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files/,
<%= foo %>
与常规中的以下内容基本相同小脚本:
<% out.println(foo); %>
这与普通 Java servlet 类中的以下内容基本相同(您可能已经知道,JSP 最终会被编译并转换为 servlet 类):
response.getWriter().println(foo);
where foo
因此被声明为本地/实例变量。因此它打印本地/实例变量foo
到确切声明位置的 HTTP 响应。
这个,使用表达语言(EL) https://stackoverflow.com/tags/el/info,这是自 2003 年 JSP 2.0 以来推荐的方法,
${ foo }
与常规中的以下内容基本相同小脚本, with PageContext#findAttribute() http://docs.oracle.com/javaee/6/api/javax/servlet/jsp/JspContext.html#findAttribute%28java.lang.String%29:
<%
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);
%>
因此,它将页面/请求/会话/应用程序范围中属性的第一个非空出现打印到响应中声明的位置。如果没有,则不打印任何内容。请注意,当它是时,它不会打印“null”的文字字符串。null
,相反小脚本 do.