EL、JSTL

一、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():是否是最后一条记录
			

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。