EL表达式,JSTL标签库
EL表达式
el替换了jsp的<%= %>
如果key是没有set的:
v
先存在域里(或者传过来),再输出。
应该使用了jsp-api这个包
1.EL表达式搜索域数据的顺序
当四个域中都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。
从小范围到大范围。pageContext,request,session, application
后面在第4点时,讲到了相同的key时,也可以指定某个域。
2.c)EL表达式输出Bean的普通属性,数组属性。List 集合属性,map集合属性
EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。
所以说:在Person对象里 只写一个get方法,不写类的成员变量都能使用!!
还有一点注意:如果一个成员变量是boolean类型,自动生成的get方法 ,命名是is什么什么。 这样的话EL表达式会根据ok的类型,自动去找isOk 这个方法。
3.EL表达式—运算
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 1、值为null值的时候,为空
request.setAttribute("emptyNull", null);
// 2、值为空串的时候,为空
request.setAttribute("emptyStr", "");
// 3、值是Object类型数组,长度为零的时候
request.setAttribute("emptyArr", new Object[]{});
// 4、list集合,元素个数为零
List<String> list = new ArrayList<>();
// list.add("abc");
request.setAttribute("emptyList", list);
// 5、map集合,元素个数为零
Map<String,Object> map = new HashMap<String, Object>();
// map.put("key1", "value1");
request.setAttribute("emptyMap", map);
%>
${ empty emptyNull } <br/>
${ empty emptyStr } <br/>
${ empty emptyArr } <br/>
${ empty emptyList } <br/>
${ empty emptyMap } <br/>
<hr>
${ 12 != 12 ? "A":"B" }
</body>
</html>
双引号 也可以
4.EL表达式的11个隐含对象
pageContext的使用:
两个一样:
为什么.scheme 就相当于.getScheme。因为输出数据时 会默认的找这个的get+首字母大写的那个方法
4个域的使用:
param:
key 是String V是String[]
输出 wzg168
当遇到要获取复选框中的数据的场景时可以使用这个参数
header:
取请求头的某一个 因为User-Agent有特殊字符 所以用大括号
cookie:
键是String类型。cookie.JSESSIONID就是找到了JSESSIONID的值,.name就是getName
initparam:
读取配置文件
JSTL标签库
el替换jsp的 <%= %>,jstl替换jsp的 <% %>
使用前先引入
1.set标签
2.if标签
如果成立,则中间的输出
3. c:choose c:when c:otherwise标签
4.forEach标签
遍历1到10
遍历数组
遍历Map集合
遍历List集合
forEach标签所有属性组合使用介绍
begin和end:
step:
varStatus: 变量状态
分析源码可得:
可以使用的方法和作用:
使用:status.Current …
如果一个成员变量是boolean类型,自动生成的get方法 ,命名是is什么什么。 这样的话EL表达式会根据first的类型,自动去找isFirst这个方法。