1.EL表达式
1.1 EL的作用
EL(Expression Language)是一门表达式语言,它对应<%=…%>。我们知道在JSP中,表达式会被输出,所以EL表达式也会被输出。EL表达式可在jsp中获取域对象里面的值。
1.2 EL的格式
格式:${…}
例如:${1 + 2}
1.3 EL内置对象
EL一共11个内置对象,无需创建即可以使用。这11个内置对象中有10个是Map类型的,最后一个是pageContext对象。
pageScope
requestScope
sessionScope
applicationScope
param;
paramValues;
header;
headerValues;
initParam;
cookie;
pageContext;
1.4 使用
操作List和数组:${list[0]}、${arr[0]};
操作bean的属性:${person.name}、${person[‘name’]},对应person.getName()方法;
操作Map的值:${map.key}、${map[‘key’]},对应map.get(key)。
pageScope:${pageScope.name}等同与pageContext.getAttribute(“name”);
requestScope:${requestScope.name}等同与request.getAttribute(“name”);
sessionScoep: ${sessionScope.name}等同与session.getAttribute(“name”);
applicationScope:${applicationScope.name}等同与application.getAttribute(“name”);
2.JSTL表达式
2.1 什么是JSTL
JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!
最常用的是core库,fmt库偶尔用。
2.2 常见标签
<c:out value=”aaa”/>
<c:set var=”a” value=”hello”/>
<c:remove var="a"/>
<c:url value="/AServlet"/>
<c:if test="${not empty a }">
<c:out value="${a }"/>
</c:if>
<c:set var="score" value="${param.score }"/>
<c:choose>
<c:when test="${score > 100 || score < 0}">错误的分数:${score }</c:when>
<c:when test="${score >= 90 }">A级</c:when>
<c:when test="${score >= 80 }">B级</c:when>
<c:when test="${score >= 70 }">C级</c:when>
<c:when test="${score >= 60 }">D级</c:when>
<c:otherwise>E级</c:otherwise>
</c:choose>
<c:forEach var="i" begin="1" end="10">
<c:set var="sum" value="${sum + i}" />
</c:forEach>
<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>
3.OGNL表达式
3.1 在struts中使用
(1) 功能
在struts2里面操作值栈数据
(2)值栈
每个action对象里面都会有一个值栈对象(只有一个),可以存值和取值。
值栈分为两部分:第一部分 root,结构是list集合,一般操作都是root里面数据;第二部分 context,结构map集合。
(3)存数据
在action定义变量,生成变量的get方法
(4)取数据
使用struts2的标签+ognl表达式获取值栈数据
<s:property value=”ognl表达式”/>
(5)OGNL的#、%使用
#
:使用#获取context里面数据
%
:在struts2标签中表单标签。在struts2标签里面使用ognl表达式,如果直接在struts2表单标签里面使用ognl表达式不识别,只有%之后才会识别。
3.2 在mybatis中使用
(1)应用在动态sql语句中
(2)#{}和${}
#{}
表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。
- 如果接收简单类型,#{}中可以写成value或其它名称。
- #{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性…的方式获取对象属性值。
${}
表示一个拼接符号,会引用sql注入,所以不建议使用${}。接收输入参数,类型可以是简单类型,pojo、hashmap。
- 如果接收简单类型,${}中只能写成value。
- ${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性…的方式获取对象属性值。