最近在学习jsp,遇到了问题.
<%
//此时相当于往session对象中存放了一个name属性,等价于 session.setAttribute("name","孤傲苍狼");
pageContext.setAttribute("name", "孤傲苍狼", PageContext.SESSION_SCOPE);
%>
<%
//取得session对象的属性值,使用pageContext对象获取
String refName1 = (String) pageContext.getAttribute("name",
PageContext.SESSION_SCOPE);
//由于取得的值为Object类型,因此必须使用String强制向下转型,转换成String类型
String refName2 = (String) session.getAttribute("name");
%>
<h1>取出存放在session对象中的属性值:</h1>
<p>第一种做法:使用pageContext.getAttribute("attributeName",PageContext.SESSION_SCOPE);去取出session对象中值</p>
<h3>
姓名:${name} <%--正常输出,而用<%=name%>输出空字符 --%>
</h3>
姓名:<%=refName1 %><%--正常输出,而用${refName1},输出为空字符 --%>
<p>第二种做法:使用session.getAttribute("attributeName");去取出session对象中值</p>
<h3>
姓名:<%=refName2 %></h3>
${name} 转译后的.java代码
out.write((java.lang.String)
org.apache.jasper.runtime
.PageContextImpl.proprietaryEvaluate("${name}", java.lang.String.class,
(javax.servlet.jsp.PageContext)_jspx_page_context, null, false));
<%=refName1%>转译后的.java代码
out.print(refName1 );
请问这两个到底什么区别呢?谢谢大神,第一次提问,排版可能不是很好。这些代码是我在这里弄来的,修改一些。
7 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
jsp 就是 Servlet,所以<%=refName1%>
执行的是局部变量,属于方法内部的变量。
${name}
有搜索范围的,从page -> request -> session -> application.
添加回答
举报
0/150
提交
取消