一、EL表达式 它只是JSP中的表达式,不是一种开发语言。 基本语法:${EL表达式} 1、获取数据 EL表达式获取的对象如果是null,页面不会显示数据。因此,EL表达式中永远不会出现空指针异常 p.name:调用域中名称为p对象的getName方法,点运算符是用于获取属性的取值的。 .运算符: []运算符:.运算符能做的,[]也能做。[]能做的,.不一定能做。 比如${p.name}===${p['name']}==${p["name"]} []运算符的优点:可以取不符合Java命名规范的东东。 2、数学逻辑运算: empty运算符:如果判断的对象是null或者空字符串,都返回true。对于集合,即使集合对象本身不是null,没有任何元素,也返回true。 EL表达式不支持字符串连接操作。 3、获取JSP的内置对象(11大EL内置对象):难点,不要与JSP的内置对象和范围名称搞混 11大EL隐式对象中,其中一个是表示自身对象外,其余都是表示的Map结构 EL内置对象名称 Java类型 备注 pageContext javax.servlet.jsp.PageContext 与JSP中的内置对象完全相同 剩余的都是代表的Map集合 pageScope java.util.Map 代表着PageContext页面范围域那个Map requestScope java.util.Map 代表着ServletRequest请求范围域那个Map sessionScope java.util.Map 代表着HttpSession会话范围域那个Map applicationScope java.util.Map 代表着ServletContext应用范围域那个Map param java.util.Map 代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串。 paramValues java.util.Map 代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串数组。 header java.util.Map 代表着请求消息头。key:头名称。value:头值,它是一个字符串。 headerValues java.util.Map 代表着请求消息头。key:头名称。value:头值,它是一个字符串数组。 cookie java.util.Map 代表客户端提交的Cookie的Map。key:cookie的name。value:cookie对象本身 initParam java.util.Map 代表着全局初始化参数(web.xml中context-param).key:参数名称。value:参数值 4、调用普通类的静态方法(EL函数) 编写步骤(自定义EL函数的编写步骤即自定义标签的编写步骤): a、编写一个普通的java类,提供一个静态方法 public class FunctionDemo { public static String toUpperCase(String str){ return str.toUpperCase(); } } b、在JavaWeb应用的WEB-INF目录下建立一个扩展名是tld(taglib definition)的XML文件(参考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.jxn.cn/myfn</uri> <function><!-- 定义函数 --> <name>toUppercase</name> <function-class>cn.jxn.el.FunctionDemo</function-class> <function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature> </function> </taglib> c、(可选步骤)前提是把tld文件放到了WEB-INF目录下。 告知应用,tld文件和tld中的uri的对应。修改web.xml,增加以下内容: <jsp-config> <taglib> <taglib-uri>http://www.jxn.cn/myfn</taglib-uri> <taglib-location>/WEB-INF/myfn.tld</taglib-location> </taglib> </jsp-config> d、在JSP中使用 用taglib指令,引入自定义的EL函数库 <%@ taglib uri="http://www.jxn.cn/myfn" prefix="myfn"%> ${myfn:toUppercase(p)} 二、JSTL JSTL中的核心标签库(替换掉JSP中的Java脚本) 导入JSTL的需要的jar包:standard.jar jstl.jar c:if 作用:判断是否为true,如果为true,那么标签的主体内容就会显示。 属性: test:必须的。要求必须是boolean的。支持表达式(EL或Java表达式) var:保存test运算结果的变量 scope: 保存的域范围。默认是page c:forEach 遍历:数组、List、Set、Map 属性: items:要遍历的目标对象。支持表达式 var:变量名。指向当前遍历的集合中的一个元素 begin:开始的索引(含) end:结束的索引(含) step:步长。默认是1 varStatus:取一个名字,引用了一个对象。 该对象有以下方法: int getIndex():当前记录的索引号。从0开始 int getCount():当前记录的顺序。从1开始 boolean isFirst():是否是第一条记录 boolean isLast():是否是最后一条记录
时间: 2024-10-07 13:19:02