一、EL表达式
EL:Expression Language的缩写,表达式语言。
基本语法形式:${EL表达式}
1、作用:替换掉JSP中的java表达式<%=%>
2、功能:EL表达式不支持字符串连接操作
a、从域中获取数据,并把数据显示在页面上。不会出现控制指针异常。
${p.name}:
Java:
Person p = pageContext.findAttribute("p");
out.write(p.getName());
.运算符:调用getter方法
[]运算符:
.运算符能做的,它都能做。${p.name}=${p['name']}=${p["name"]}
.运算符不能做的,它也能做(能做不符合java命名规范的数值的获取)。 ${list[0]} ${header['Accept-Encoding']}
b、进行简单的数学和逻辑运算
${5/3}===>1
${5%3}===>2
**empty:能判断表达式是否是null或者""字符串(不会忽略首尾空格)。是的话返回true
能判断一个集合中有没有元素。
c、获取web中开发中的常用对象(11大隐式对象)
pageContext:代表javax.servlet.jsp.PageContext对象本身
其余10个都是代表Map类型
pageScope:代表的是一个Map。页面范围的域对象中的Map
requestScope:
sessionScope:
applicationScope:
param:
paramValues:
header:
headerValues:
cookie
initParam:
d、调用普通java类中的静态方法(自定义EL函数)
编写步骤:(自定义标签的步骤相同)
1、编写一个类:定义一个静态方法。
package com.itheima.functions;
public class StringUtil {
public static String toUpperCase(String str){
return str.toUpperCase();
}
public static String connect(String s1,String s2){
return s1+s2;
}
}
2、在WEB-INF目录下建立一个扩展名为tld(Tag Libary Defination)的xml文件。(EL函数与具体类的方法进行一个映射)
(参考Tomcat中的例子)
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>myfn</short-name>
<uri>http://www.itheima.com/jsp/functions</uri>
<function>
<description>Converts the string to uppercase</description>
<name>toUpperCase</name>
<function-class>com.itheima.functions.StringUtil</function-class>
<function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature>
</function>
<function>
<name>connect</name>
<function-class>com.itheima.functions.StringUtil</function-class>
<function-signature>java.lang.String connect( java.lang.String,java.lang.String )</function-signature>
</function>
</taglib>
3、在web.xml中将tld的实际存放路径与tld中的uri进行绑定(可选的:前提是你把tld文件放到了WEB-INF目录下)
<jsp-config>
<taglib>
<taglib-uri>http://www.itheima.com/jsp/functions</taglib-uri>
<taglib-location>/WEB-INF/myfn.tld</taglib-location>
</taglib>
</jsp-config>
4、在JSP中使用自定义的函数
使用前:通过taglib指令,引入
Tip:
SUN提供的标准的EL函数。全都是与String有关
属于JSTL的一部分:(Java Standard Tag Libary)
core:核心
fmt:格式化
xml:操作xml
sql:操作数据库
functions:EL函数
前提:使用JSTL,导入jar包:jstl.jar standard.jar
二、JSTL中的Core标签:c:if c:forEach
1、c:if:如同java中的if
属性:
test:必须的。要求返回值是boolean的表达式(EL或Java表达式)。如果为true,则主体内容显示
var:存放结果的变量名
scope:存放结果的域范围。默认是page。
2、c:forEach:循环遍历(重复执行主体内容)
属性:
items:要遍历的对象。数组、List、Set、Map、Enumeration等
begin:遍历的items如果有的话,代表索开始引号
end:遍历的items如果有的话,代表索结束引号
var:存放结果的变量名
step:步长
varStatus:指定一个变量,该变量引用一个对象
该对象有以下方法:
getIndex():返回当前遍历的元素的索引
getCount():返回当前遍历的元素的索引+1
isFirst():返回当前遍历的元素是不是第一个
isLast():返回当前遍历的元素是不是最后一个