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>