El表达式使JSP的开发变得更加简单
简介:
什么是EL:
Expression Language(表达式语言)
El得功能:
代替JSP页面中数据访问时得代码复杂编程
EL得特点:
自动转换类型:
EL得到某个数据时可以自动转换类型
使用简单
EL表达式得语法:
${EL expression}
通过变量名取值
获取对象得属性
获取集合元素
执行表达式
001:通过变量名取值
${变量名}:
如:代码:
按照page--》request--》session--》application的作用域顺序依次查找,找到返回,找不到返回null。
//准备值(在Servlet中) request.setAttribute("user",user); //在JSP中访问数据 姓名:${user] ----》${requestScope.user}
指定作用域:
属性范围 | EL中的名称 |
page | pageScope,例如${pageScope.username}表示在page作用域查找变量username,找不到返回null |
request | requestScope |
session | sessionScope |
application | applicationScope |
002:获取对象的属性:
<%-- //使用EL(操作符)展示集合--%> <h1> 使用.展示集合</h1> 用户名:${user.userName} 密码:${user.password} <%-- //使用[ ]展示集合--%> <h1> 使用[ ]展示集合</h1> 用户名:${user["userName"]} 密码:${user["password"]}
EL表达式语法:
EL隐试对象
JSTL通用标签:
使用EL表达式可以简化JSP页面编码,但是如果需要进行逻辑判断和循环控制怎么办?
El表达式封装了数据访问功能,而JSTL标签库则封装了逻辑控制,循环控制以及数据格式化功能,二者结合使用才可以完整的实现动态页面开发需求。
什么是JSTL:
jsp标准标签库(JSP Standard Tag Library)
JSTL优点:
- 提供一组标准标签
- 可用于编写各种动态功能
使用步骤:
引入JSTL的jar文件和标签库描述符文件
在JSRTL页面添加taglib指令
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
使用JSTL标签
JSTL标准标签库介绍:
set:设置指定范围内的变量值
将value值存储到范围为scope的变量variable中
语法:<c:set var="variable" value="value“ scope=”scope“/>
var:变量名称
value:变量的值
scope:变量的作用域
将value值设置到对象的属性中
语法:<c:set target=”target“ property=”property“ value=”calue“/>
target:设置变量的每一个值。
property:=设置变量中的哪一个属性。
value:属性具体的值。
//在servlet或者jsp中设置javaBean User user=new User(); request.setAttribute("user",user); //在JSP中修改javaBean的属性值 <c:set target="${user} "property="name" value="defautName"></c:set>
out:计算表达式并将结果输出显示
不指定默认值
<c: out value="value"/>
指定默认值
<c:out value ="value" defaulrt="default"/>
//在servlet或者jsp中设置javaBean User user=new User(); request.setAttribute("user",user); //在JSP中修改javaBean的属性值 <c:out value="${user.name} " default="NO username"/>
转义特殊字符:
out 后加上 (escapeXml=”false“)就不会被转义:
<p>${"<a href='http://www.baidu.com'>百度</a>"}</p> //页面显示百度 <p>页面显示 <c:out escapeXml="false" value="<a>'http://www.baidu.com'>百度</a>"/> //页面显示百度 </p> <c:out value=""<a>'http://www.baidu.com'>百度</a>"/> //页面显示<a>'http://www.baidu.com'>百度</a>
remove:删除指定范围内的变量
<c:remove var="variable" scope="scope"/>
var:变量名称。
scope:作用域。
<p>msg=<c:out value="${msg}" default="null"></c:out> </p> <p><c:set var="msg" value="hello remove" scope="page"></c:set> </p> <p>msg=<c:out value="${msg}" default="null"></c:out> </p> <p><c:remove var="${msg}" scope="page"></c:remove> </p> <p>msg=<c:out value="${msg}" default="null"></c:out> </p>
JSTL之条件查询:
if:实现java语言中if语句的功能
语法:<c:if test="condition" var ="variable" scope="scope"> ... </c:if>
test="condition"::判断条件表达式返回true/false
var ="variable"::该变量用于保存返回值true/false
scope="scope"::指定var变量的作用域
<c:if test="判断条件"></c:if>
choose:实现if-else if-else语句功能
语法:
<c:choose>
<c:when test="condition1">
内容一
</c:when>
<c:when test="condition2">
内容二
</c:when>
</c:choose>
.............
<c:otherwise>
内容n
</c:otherwise>
</c:choose>
JSTL迭代标签
forEach:实现对集合对象的遍历
<c:forEach items="collection" var="varName" begin=”start“ end=”end“ step=”stepSize“ varStatus=”status“>
........循环迭代代码
</c:forEcah>
items="collection"::iteams指定要遍历的集合对象
var="varName"::var指定当前成员的引用
begin=”start“::begin指定从集合的第几位开始
end=”end“::end指定迭代到集合的第几位结束
step=”stepSize“::step指定循环的步长
varStatus=”status“”::varStatus属性用于存放var引用的成员相关信息,如索引
代码演示:
<tr> <td>名字</td> <td>球号</td> <td>操作</td> </tr> <c:forEach items="${users}" var="u"> <tr> <td>${u.userName}</td> <td>${u.password}</td> <td><a href="#">修改</a></td> </tr> </c:forEach>