EL
一、作用:
让jsp获取后台数据更加便捷。
二、使用:
语法结构:${expression}
三、使用El表达式获取值:
后端:
①req.setAttribute("str", "获取字符串");-->字符串
②Actor a = new Actor("多宝", "表演", new Address("北京", "昌平, "城南"));req.setAttribute("actor", a);-->对象
③List<Actor> list = new ArrayList<Actor>();-->list集合
Actor actor = new Actor();
actor.setName("多肉");
actor.setName("多动");
list.add(actor);
req.setAttribute("list", list);
④Map<String,Actor> map = new HashMap<String, Actor>();-->map集合
map.put("aa", new Actor("多肉", "睡觉"));
map.put("bb", new Actor("多动", "吃狗粮"));
⑤request对象存储的请求数据
前端:
①${str}
②${actor}-->获取对象.-->$${actor.address.city}-->获取地址
③${list[0].name }-->获取list集合第一个元素的名称
④${map.aa.name}-->获取map集合,键值为aa数据的名称
⑤${param.键名}-->返回值 ${paramValues.键名}-->返回数组
四、使用EL表达式判断是否空值
后端:
①req.setAttribute("str","");
②req.setAttribute("objects",new Actor());
③req.setAttribute("list",new ArrayList());
④req.setAttribute("map",new HashMap());
前端:
${empty str}
${empty objects}
${empty list}
${empty map}
五、使用El表达式获取请求头
${header }-->${headerValues["accept-language"][0] }
六、使用El表达式获取cookie
${cookie }-->${cookie.JSESSIONID }-->${cookie.JSESSIONID.name }-->${cookie.JSESSIONID.value }
七、使用El表达式进行运算
常用运算符皆可在EL表达式中直接使用,例如:
${1*2 } ${1+"2" } ${1>2 } ${1%2 } ${sex==1?'男':'女' } ...
八、El表达式获取作用域的顺序
pageContext-->request-->session-->appilcation。获取作用域的值
${pageScope.键名}-->${requestScope.键名}-->${sessionScope.键名}-->${applicationScope.键名}
JSTL
一、作用
用标签替换逻辑代码的编写
二、使用
基于EL表达式。除Myeclipse以编码工具,其余都需要导入jar包
链接:https://pan.baidu.com/s/1-6XtNpJpPT6o5HqIvU_SsQ 提取码:1111
在jsp页面引入
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <-- 核心标签库 -->
<%@taglib prefix="f" uri="http://java.sun.com/jsp/jstl/fmt"%> <-- 格式化标签库 -->
三、常用标签
<c:forEach items="El表达式获取作用域中要遍历的对象" var="每次循环的数据结果">
${var中的数据}...
</c:forEach>
<c:forEach begin="循环开始的位置" end="循环结束的位置" step="步长" varStatus="每次循环的数据">
</c:forEach>
<c:out value=""El表达式获取作用域中要显示的值" default="默认值"></c:out> 用于在JSP中显示数据,就像<%= ... >
<c:set var="存储信息的变量值" value="要存储的值" scope="var属性的作用域"></c:set> 用于保存数据
<c:remove var="要移除的变量名称" scope="变量所属的作用域"/> 移除一个变量
注意:如果不写变量所属作用域,则移除所有作用域中 要移除的变量名
<c:if test="条件" var="用于存储条件结果的变量" scope="属性的作用域">
...
</c:if>
<c:choose> <c:when test="条件">
...
</c:when> <c:when test=" 条件 ">
...
</c:when> ...
...
<c:otherwise> ...
</c:otherwise></c:choose>
注意:jstl获取的值都必须在作用域中。