目的:为了使JSP写起来更简单,可以直接写在HTML页面上和JSP标签中。

①EL表达式会转换成Java代码在后台执行。

②EL表达式使得访问存储在JavaBean中的数据变得非常简单。

③EL既可用来创建算数表达式也可用来创建逻辑表达式

④在EL表达式中可以使用整型数、浮点数、字符串、true、false、null

 

EL中的基础操作符

EL表达式支持大部分Java所提供的算术和逻辑操作符:

操作符描述
. 访问一个Bean属性或者一个映射条目
[] 访问一个数组或者链表的元素
( ) 组织一个子表达式以改变优先级
+
- 减或负
*
/ or div
% or mod 取模
== or eq 测试是否相等
!= or ne 测试是否不等
< or lt 测试是否小于
> or gt 测试是否大于
<= or le 测试是否小于等于
>= or ge 测试是否大于等于
&& or and 测试逻辑与
|| or or 测试逻辑或
! or not 测试取反
empty 测试是否空值

 

 

JSP EL隐含对象

JSP EL支持下表列出的隐含对象:

隐含对象描述
pageScope page 作用域
requestScope request 作用域
sessionScope session 作用域
applicationScope application 作用域
param Request 对象的参数,字符串
paramValues Request对象的参数,字符串集合
header HTTP 信息头,字符串
headerValues HTTP 信息头,字符串集合
initParam 上下文初始化参数
cookie Cookie值
pageContext 当前页面的pageContext

 

语法:

 

①在JSP EL中通用的操作符是“.”和“[ ]”。这两个操作符等允许您通过内嵌的JSP对象访问各种各样的JavaBean属性。

②当JSP编辑器在属性中见到“${ }”格式后,它会产生代码来计算这个表达式,并且产生一个替代品来代替表达式的值。

③我们也可以在JSTL标签中使用EL表达式。

EL表达式应用

①${ user.name }   访问姓名

②request.setAttribute("age1","age");

访问age by EL(两种方式):

    ${ user[age1]} 把绑定名进去

    ${user["age"]} 把属性放进去

③${ user.course.counseName }

    ${ user.interest[1] }

变量

EL存取变量数据的方式很简单,例如:${username}。它的意思是取出某一范围内名称为username的变量。                              如果我们没有指定哪一范围的username,所以它才会依次从page、request、session、application范围查找。                        找到了就直接回传,不再继续查找,没找到则返回null。   

通过EL获取请求参数

①${param.name},相当于request.getParameter(name);

    例如:${user.name}

②${paramValues.interest[0]}相当于:request.getParameterValues(interest);

示例:JSP页面中

<% 
    User u1 = new User();
    u1.setName("fyj");
    u1.setAge(18);
    u1.setInterest(new String[]{ "math","gym" };
    request.setAttribute("user",u1);
%>

 

① 用JSP标签获取获取属性

 

<% 
    User u2 = (User) request.getAttribute("user");
    out.println("姓名:"+u2.getName()+"性别:"+u2.getAge());
%>


② 用EL表达式获取

姓名:${ user.name }

性别:$ { user["age"] }    貌似属性放在中括号中就要加引号,如果是绑定名就不用加引号。

兴趣:${ user.intereset[0] }

设置访问范围:

用户姓名:${ requestScope.user.name }

 

JSP标准标签库(JSTL)

JSTL是一个JSP标签集合,它封装了JSP应用的通用核心功能。

Apache组织开发了一套标签库,被sun公司整合称之为标准标签库(JSP standard Tag Library)简称JSTL配合EL表达式,以达

到减轻JSP文件的复杂度,方便维护JSP文件的目的。

JSTL支持通用的、结构化的任务,根据JSTL标签所提供的功能,可以将其分为5个类别。

①核心标签

②格式化标签

③SQL标签

④XML标签

⑤JSTL标签

 

如何使用JSTL:

①将JSTL标签对应的jar文件拷贝到WEB-INF/lib目录下

②使用taglib指令导入JSP标签

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    导入核心标签

 

core核心标签

①if标签

语法:<c:if test="tt" var="dd" scope="request"></c:if>

当test为true时,执行标签内容,test属性可以使用EL表达式赋值。

var属性:指定一个绑定名称

scope属性:指定绑定的范围(page、request、session、application)。实际范围小于绑定范围查不到。

request.setAttribute("emp",emp);
<c:if test="${emp.gender='M'}" var="rs" scope="request"></c:if>
<c:if test="${!rs}"></c:if>

 

②choose标签

when表示一个处理分支当test属性为true时,会执行该分支,可以出现一次或多次,otherwise表示例外,可以不写且只能写一次。

<c:choose>
    <c:when test="${emp.name='D'}">D</c:when>
    <c:when test="${emp.name='C'}">C</c:when>
    <c:otherwise>T</c:otherwise>
</c:choose>

 

③forEach标签

用于遍历集合或数组。

request.setAttribute("emps",emps);
<c:forEach var="emp" items="${emps}" varStatus="s">
    姓名:${emp.name}
    性别:${emp.gender}
    计数:${s.count}
    下标:${s.inndex}
</c:forEach>

 

var:绑定名,容器每次从集合取出一个对象,这个对象绑定到pageContext上。

items:指定要遍历的集合。

此处还可选填:varStatus属性。

指定一个绑定名称,绑定值是由容器创建的对象,该对象封装了一个当前迭代的状态,循环获取下标。

例如:varStatus='s'    s.index:获取下标    s.count:可以记录行。

 

posted on 2018-05-20 10:54  FuYingju  阅读(73)  评论(0编辑  收藏  举报