EL和JSTL表达式
一、EL表达式:
写法: ${XXX}
取值范围:page、request、session、application
1、EL的取值
1、对一般对象来说,如果取对象里的属性,那么必须有响应属性的get方法才能取到
2、对于map等键值对保存的对象来说,直接${map1.key1}可取到map1中k1对应的值
3、对于数组来说,可以通过${数组1[i]} 取到数组1中下标为i的元素
2、EL的param属性
${param.xxx} 相当于request.getAttribute("name")
3、EL的empty属性:
判断是否空:${empty object}
4、EL的运算符:
${5+3}
${5-3}
${5*3}
${5/3} 或 ${5 div 3}
${5%3} 或 ${5 mod 3}
${empty 5>3} 或 ${5 gt 3}
${empty 5<3} 或 ${5 lt 3}
${empty 5==3} 或 ${5 eq 3}
${empty 5!=3} 或 ${5 ne 3}
5、其他用法:
${pageContext.request.contextPath} 绝对路径
二、JSTL的C标签:(与EL搭配使用)
导入需要jstl.jar与standard.jar,并在jsp中通过taglib引入standard.jar——>META-INF——>c.tld中的uri
1、<c:out
<c:out value="${welcome}" escapeXml="false"/>
escapeXml="true": 默认,会将value中的值直接输出
escapeXml="false": 如果value的值是html标签,会以html格式输出,比如:字体变红...等等
2、<c:set
<c:set var="userid" value="root"/>
userid:${userid}
3、<c:remove
<c:remove var="userid" />
userid:${userid}
4、<c:if
<c:if test="testCondition" var="varName" scope="..."
...
</c:if>
<c:if text="${sessionScope.user.role.roleId} == 2" > 错
<c:if text="${sessionScope.user.role.roleId == 2}" > 对
5、<c:choose>
<c:choose>
<c:when test="...">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
6、<c:forEach items="..." var="..." varStatus="index(表示下标),count(表示第几个元素)" step="..." begin="..." end="...">
下拉框选中:
<select ...>
<c:forEach items="..." var="...">
<c:set var="selectedStr"/>
<c:if test="...">
<c:set var="selectedStr" value="selected"/>
</c:if>
<option value="..." ${selectedStr}>...</optiion>
</c:forEach>
</select>
下拉框分页:
<select onChange="change(this.value)">
<c:forEach begin="0" end="${requestScope.totalPageCount}" varStatus="aaa">
<option value="${aaa.count"
<c:if test="${requestScope.pageNum == aaa.count}">selected</c:if>
>
第${aaa.count}页
</option>
</c:forEach>
写法: ${XXX}
取值范围:page、request、session、application
1、EL的取值
1、对一般对象来说,如果取对象里的属性,那么必须有响应属性的get方法才能取到
2、对于map等键值对保存的对象来说,直接${map1.key1}可取到map1中k1对应的值
3、对于数组来说,可以通过${数组1[i]} 取到数组1中下标为i的元素
2、EL的param属性
${param.xxx} 相当于request.getAttribute("name")
3、EL的empty属性:
判断是否空:${empty object}
4、EL的运算符:
${5+3}
${5-3}
${5*3}
${5/3} 或 ${5 div 3}
${5%3} 或 ${5 mod 3}
${empty 5>3} 或 ${5 gt 3}
${empty 5<3} 或 ${5 lt 3}
${empty 5==3} 或 ${5 eq 3}
${empty 5!=3} 或 ${5 ne 3}
5、其他用法:
${pageContext.request.contextPath} 绝对路径
二、JSTL的C标签:(与EL搭配使用)
导入需要jstl.jar与standard.jar,并在jsp中通过taglib引入standard.jar——>META-INF——>c.tld中的uri
1、<c:out
<c:out value="${welcome}" escapeXml="false"/>
escapeXml="true": 默认,会将value中的值直接输出
escapeXml="false": 如果value的值是html标签,会以html格式输出,比如:字体变红...等等
2、<c:set
<c:set var="userid" value="root"/>
userid:${userid}
3、<c:remove
<c:remove var="userid" />
userid:${userid}
4、<c:if
<c:if test="testCondition" var="varName" scope="..."
...
</c:if>
<c:if text="${sessionScope.user.role.roleId} == 2" > 错
<c:if text="${sessionScope.user.role.roleId == 2}" > 对
5、<c:choose>
<c:choose>
<c:when test="...">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
6、<c:forEach items="..." var="..." varStatus="index(表示下标),count(表示第几个元素)" step="..." begin="..." end="...">
下拉框选中:
<select ...>
<c:forEach items="..." var="...">
<c:set var="selectedStr"/>
<c:if test="...">
<c:set var="selectedStr" value="selected"/>
</c:if>
<option value="..." ${selectedStr}>...</optiion>
</c:forEach>
</select>
下拉框分页:
<select onChange="change(this.value)">
<c:forEach begin="0" end="${requestScope.totalPageCount}" varStatus="aaa">
<option value="${aaa.count"
<c:if test="${requestScope.pageNum == aaa.count}">selected</c:if>
>
第${aaa.count}页
</option>
</c:forEach>