为了账号安全,请及时绑定邮箱和手机立即绑定

jsp的输出表达式 <%=refName1%>和${name}有何区别? 转译的.class有何不同呢?

jsp的输出表达式 <%=refName1%>和${name}有何区别? 转译的.class有何不同呢?

动漫人物 2019-02-20 18:12:20
最近在学习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 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

${name}request.getAttribute("name"),而<%= name %>就是页面作用域上的name

查看完整回答
反对 回复 2019-03-01
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

jsp 就是 Servlet,所以<%=refName1%> 执行的是局部变量,属于方法内部的变量。

${name} 有搜索范围的,从page -> request -> session -> application.

查看完整回答
反对 回复 2019-03-01
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

${}是EL表达式
<%= %>是jsp表达式
jsp表达式 更加原始吧

查看完整回答
反对 回复 2019-03-01
?
HUH函数

TA贡献1836条经验 获得超4个赞

都是输出,区别在取值方式不同,一个是从上下文session等中获取,一个是直接使用局部变量。

查看完整回答
反对 回复 2019-03-01
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

都是输出后台数据的方式

${}是EL表达式的方式
<%= %>是JSP表达式的方式

查看完整回答
反对 回复 2019-03-01
?
茅侃侃

TA贡献1842条经验 获得超21个赞

虽然两种方式(JSP 和 EL表达式)都可以获取到数据,然而吾辈还是更推荐 EL 表达式呢 (σ′▽‵)′▽‵)σ

查看完整回答
反对 回复 2019-03-01
  • 7 回答
  • 0 关注
  • 570 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信