EL表达式
EL快速入门
使用EL表达式能够简化JSP页面中Java代码的编写。格式非常简单,只需要在JSP页面中嵌入${表达式}
即可。
<%--将用户名存入请求域--%>
<%request.setAttribute("username","zhangsan");%> <br>
Java代码获取数据:<%out.println(request.getAttribute("username"));%><br>
JSP表达式:<%=request.getAttribute("username")%><br>
EL获取数据:${username}
EL获取域值
EL表达式根据域对象中存储的数据类型不同,获取方式也稍有不同。
- EL获取基本类型数据
<!--在request域中存数据-->
<% request.setAttribute("num",10); %>
<!--获取num的值-->
${num} <br>
- EL获取自定义对象
<!--request域中存储Student对象-->
<%
Student stu=new Student("张三",20);
request.setAttribute("stu",stu);
%>
<!--EL获取Student对象的属性值-->
学生对象:${stu} <br>
学生姓名:${stu.name} <br>
学生年龄:${stu.age} <br>
- EL获取List集合
<!--request域中存储List集合-->
<%
ArrayList<Student> list=new ArrayList<>();
list.add(new Student("张三",20));
list.add(new Student("李四",30));
request.setAttribute("list",list);
%>
<!--EL获取request域中的list集合,以及其元素-->
获取list集合:${list} <br>
获取list集合的0索引学生:${list[0]}<br>
获取list集合的1索引学生姓名:${list[1].name}<br>
- EL获取Map集合
<!--request域中存储Map集合-->
<%
Map<String,String> map=new HashMap<>();
map.put("孙悟空","花果山");
map.put("猪八戒","高老庄");
map.put("沙和尚","流沙河");
request.setAttribute("map",map);
%>
<!--EL获取request域中的map集合,以及其元素-->
获取map集合:${map} <br>
获取map集合中键对应的值:${map["孙悟空"]} <br>
EL运算符
算数运算符:+ - * / %
比较运算符:== != > >= < <=
逻辑运算符:&& || !
空运算符:empty
功能:用于判断集合、数组、字符串是否为null并且长度是否为0
${empty list}
根据域中存储的数据,让单选框选中男或女
<%request.setAttribute("gender","女");%>
<input type="radio" value="男" ${gender=="男"?"checked":""}> 男
<input type="radio" value="女"${gender=="女"?"checked":""}> 女
EL表达式细节
1.EL表达式可以获取四大域的数据,依次从小到大的域中查找指定键名对应的值,如果找到了就不再往下找.
2.EL表达式可以获取八大隐式对象
JSTL标签库
JSTL(全称JavaServer Pages Tag Library)意为JSP标准标签库,可以用来简化在JSP页面中Java代码的编写。
导入JSTL相关jar包
在JSP页面导入JSTL包
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
常用JSTL标签
<!--if标签:相当于Java的if语句-->
<c:if test="${number%2==0}">
${number}是偶数
</c:if>
<!--choose标签:相当于Java的switch语句-->
<c:choose>
<c:when test="${number=1}">星期一</c:when>
<c:when test="${number=2}">星期二</c:when>
<c:when test="${number=3}">星期三</c:when>
</c:choose>
<!--foreach标签:相当于Java的for循环-->
<c:forEach begin="0" end="${list.size()}" step="1" var="i">
<c:if test="${list[i]!=null}">
${list[i].name},${list[i].age}<br>
</c:if>
</c:forEach>
<!--foreach标签:类似Java增强for循环-->
<c:forEach items="${list}" var="element">
${element.name},${element.age}<br>
</c:forEach>