-
EL
-
功能
- 动态输出内容 替代JSP中的表达式元素<%=%>简化jsp 主要就是取值
-
一般格式
- ${ EL表达式}
-
内置对象 牢记!!因为其他也是差不多
- param/paramValues 方便输出请求参数
- pageScope/requestScopre/sessionScope/applicationScope 输出各范围的属性
- header/headerValues 与请求头相关
- cookie/initParam
- pageContext
${param.name} / ${paramValues.hobbies[0]} ${header.accept} / ${headerValues.cookie[0]} ${cookie.JSESSIONID.value}/${initParam.path} pageContext 可以调用PageContext类所有符合规范的getXXX方法 例如:public abstract ServletRequest getRequest() ${pageContext.request} 如果该EL返回的是真正的请求对象,可以继续调用HttpServletRequest中的其他getXXX方法 ${pageContext.request.remoteAddr} //调用请求中的getRemoteAddr方法
-
获取数据的作用域检索顺序
- 与获取属性数据相关对象
- pageScope:页面范围
- requestScope:请求范围
- sessionScope:会话范围
- applicationScope:上下文范围
- 检索顺序:不指定范围时,例如${user.pwd},将自动从pageScope开始查找,直到applicationScope,如果没查到,则什么也不显示
- 与获取属性数据相关对象
-
强制使用某作用域属性
- ${requestScope.user.pwd}
-
运算符
- 算术运算符 + - * / % mod
- 比较运算符 ==/eq、!=/ne、</lt 、>/gt 、<=/le 、>=/ge
- 逻辑运算符 &&/and、||/or、!/not
- 注:EL运算符多结合jstl使用
- 集合运算符等特殊运算符 ${requestScope.productList[0].productName}
- empty
- ${A?B:C}
- ()
-
调用静态方法的方式
//1 定义TestELStatic类,定义静态方法 public class TestELStatic { public static int sum(int x,int y){ return x+y; } } //2 WEB-INF下定义test.tld【必须为.tld文件】,将静态方法定义为函数 <?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_3.xsd" version="2.3"> <display-name>Custom Functions</display-name> <tlib-version>1.0</tlib-version> <uri>http://www.etc.com</uri><!-- uri为tld文件的唯一标记--> <function> <name>sum</name> <!--EL使用该函数的名字--> <function-class>com.chinasofti.chapter09.section01.TestELStatic</function-class><!--方法所在类全类名--> <function-signature>int sum(int,int)</function-signature> <!--方法声明形式-> </function> </taglib> //3 WEB-INF下web.xml中 配置test.tld文件 <jsp-config> <taglib> <taglib-uri>http://www.etc.com</taglib-uri> <taglib-location>/WEB-INF/test.tld</taglib-location> </taglib> </jsp-config> //4 在JSP中引入tld方法,调用静态方法 <%@taglib uri="http://www.etc.com" prefix="t" %> 调用静态方法:${t:sum(10,12)}
-
-
JSTL------------与HTML代码完全的分隔,不要考虑,写就是了
-
标签库作用
- 标签库:标签处理器类+tld文
- 实现动态内容 – 用于大大简化jsp
- 可重复使用,便于维护
- 取代jsp中所写的代码!!!!----对应thymeleaf
- 标签库:标签处理器类+tld文
-
JSTL简介
- 包括标签处理器类(.jar形式)及描述文件tld
-
JSTL使用步骤
- 引入包
- taglib指令 -》使用
-
JSP taglib指令标签
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-
JSTL属性操作标签
标签名 所在标签库 作用:方法作用 属性 :即方法参数 set c.tld 指定范围内,将对象保存为属性 var:属性名、scope:属性范围、value:使用EL remove c.tld 指定范围内,删除属性 var:属性名 、scope:属性范围 例如:在会话属性存一个属性 <c:set var="loggedin" scope="session" value="true"/>
-
JSTL条件分支标签
if c.tld 条件为true,执行标签体内容 test:返回值为布尔值的表达式,作为分支条件 choose c.tld 实现if/else if/else 需要与when,otherwise结合 when c.tld 实现else if逻辑与choose、otherwise配合 test:返回布尔值表达式 otherwise c.tld 实现else逻辑,与choose、when配合 例如: test为条件 <c:if test="${not empty a}"> <c:out value="${a}"></c:out> </c:if> <c:choose> <c:when test="${score>100||score<0}">错误分数:${score}</c:when> <c:when test="${score>=90}">A级</c:when> <c:otherwise>E级</c:otherwise> </c:choose>
-
JSTL迭代标签
forEach c.tld 迭代集合或数组 items:需要迭代的数组或集合对象,可使用EL var:迭代过程中的临时变量 forToken c.tld 迭代字符串 items:指定迭代的字符串,delims:表示分隔符, var:表示分隔符分割items产生的字符串 例如: <c:forEach var="c" items="${cities}"> ${c.key}=${c.value}<br/> </c:forEach> <c:forToken items="a:b:c:d" delims=":" var="token"> <c:out value="${token}"></c:out> </c:forToken>
-
JSTL其他标签
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <% Date date = new Date(); pageContext.setAttribute("d", date); %> <fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/> //用于格式化日期 在fmt.tld
-
自定义标签的实现方法
- 标签处理器类
- tld文件
-
实现自定义国际化标签
-
JavaEE基础八之EL与JSTL相关知识(过时不谈)
最新推荐文章于 2022-03-13 22:34:14 发布