EL、JSTL和OGNL表达式

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读取对象中的属性值,通过属性.属性.属性…的方式获取对象属性值。

你可能感兴趣的:(#,mybatis)