el表达式
- JSP内置的一种表达语言
- 作用
- 从域对象中获取属性的值
- 执行运算
- 提供了一些常用WEB对象(例子:cookie)
- 调用Java的方法
- 语法:${表达式内容}
- 注意事项:
- page指令:是否忽略el表达式。忽略了,jsp中就不能使用el了(isELIgnored)
-
获取域中的值
如果域对象中属性的名称有相同的,使用EL表达式默认从最小的域中取值
list和数组使用下标值取值 ${ list[0] }
如果是map集合或者对象 ${ map.aaa }
如果map集合中的key有特殊字符的话,使用${ map[ "c.d" ] }
-
EL获取常用的对象
1. pageScope 获取page域对象的值 ${ pageScope.age }获取page域对象中的值
2. requestScope 获取request域对象的值
3. sessionScope 获取session域对象的值
4. applicationScope 获取application域对象的值 (servletContext)
5. param 获取表单提交过来的参数 (相当于 request.getParameter())
6. paramValues 获取表单提交过来的参数 (相当于 Map<String,String[]> map = request.getParameterMap() )
7. header 获取请求头信息
8. headerValues 获取请求头信息
9. initParam 获取全局的初始化参数
10.cookie 获取cookie对象的引用,可以使用这个引用获取cookie的名称和值
前提条件:在servlet中创建了一个Cookie对象Cookie cookie = new Cookie("last","2015-11-11");
${ cookie.last } -- 获取cookie的名称为last的对象
${ cookie.last.name } -- 获取cookie对象的名称 last
${ cookie.last.value } -- 获取cookie对象的值 2015-11-11
11.pageContext
获取项目的虚拟路径(项目名称) ${ pageContext.request.contextPath }
-
EL表达式支持运算 ${ }
1.关系运算符
等于 = = 或 eq 不等于 != 或 ne 小于 < 或 lt 大于 > 或 gt
小于等于 <= 或 le 大于等于 >= 或 ge
2.逻辑运算符
交集 && 或 and 并集 || 或 or 非 ! 或 not
empty运算符:检查对象是否为null或“空”
三元表达式: ${ user!=null ? user.name : "" }
JSTL标签库
需要两个jar包 jstl.jar standard.jar
JSTL提供的核心标签 1.核心标签库(core) ----c 2.fn.tld EL函数库
注意:el表达式操作的都是域中的数据,使用前必须将值放到域中
核心标签库:
- out标签
- 语法:<c:out value="" />
- 作用:输出域对象的值或者常量
- 属性:value--输出的内容 default--默认值(如果输出没找到值,输出默认值) escapeXml--设置默认转义,默认是true,转义。设置成false,不进行转义
- set标签 向域中存入值
- 语法:<c:set >
- 属性:var--属性名称 value--属性值 scope--域范围
- remove标签
- catch标签
- if标签 只有c:if 没有c:else
- 属性:test --判断条件,返回true或false var --test返回的结果保存到var声明的变量中 scope --域的范围
- choose标签
- 作用:判断数据
- 语法(注意)
相当于if else if else
<c:choose>
<c:when test="">
</c:when>
<c:when test="">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
- forEach标签
- 作用:迭代数据, 例如:request域中,有一个list集合,使用forEach标签循环遍历list集合
- 语法:
-
<c:forEach var="str" items="集合"> ${ str } </c:forEach> <c:forEach var="i" begin="1" end="10" step="1"> ${ i } </c:forEach>
属性:1.增强for循环 for(String str:集合) var --循环遍历的数据保存到var声明的变量中(相当于 str) items --要遍历的集合,注意:从域对象中取值(相当于集合) 2.普通for循环 for(int i=0;i<10;i++) begin --从哪开始(相当于i=0) end --到哪结束(相当于i<10) step --步长(相当于i++)
-
url标签
-
作用:有提交的地址相关(超链接 form表单 img的src属性)
-
好处:1.假如使用form的action编写地址 <form action="${pageContext.request.contextPath}/xxx"> 如果使用<c:url>标签 <form action="<c:url value='/xxx' >">
-
特点:不写项目名,默认给你加上项目名
-
好处: 2.使用<c:url> 默认给你拼接jsessionid session的追踪(在请求的地址加 jessionid=sdawd)
自定义EL函数
- 开发EL函数的步骤
- 编写一个java类,提供一个方法,方法必须静态方法,必须有返回值
- 在WEB-INF目录下,编写一个 .tld 结尾的文件(xml文件)进行配置
- 在JSP的页面上引入自己编写的EL函数库
配置自定义EL函数
<function>
<!--配置方法的名称-->
<name>jsp中使用的方法名(和java文件中方法名无关)</name>
<!-- 配置方法所在的类-->
<function-class>类的全路径</function-class>
<!-- 配置方法的签名(把类中的方法描述清楚) -->
<function-signature>返回类型 方法名 参数类型</function-signature>
</function>
自定义标签