Day52
*EL表达式:目的是尽量消除JSP页面中的java代码
I. 基本用法 ${}
3+4=${3 + 4}<br>
3*4=${3 * 4}<br>
II. 获取request、session、application的setAttribute中的值(name、password是key值)
${requestScope.name}<br>
${sessionScope.password}<br>
${applicationScope.name}<br>
<!--
如果直接写key值,则会按照request->session->application这个顺序来找
但是在实际应用中,建议不要这样写
-->
${name}<br>
III. 获取请求中的参数
${param.username}<br>
IV. empty的用法:判断字符串是否是null 或者 “”
${empty requestScope.sex}
V. gt ge lt le eq可以用在el中
5 <= 10 :${5 le 10}
*JSTL:标准标签库,极大的简化代码的编写,必须要配合EL来使用
在使用jstl之前,需要在jsp中加上一个标签库指令。prefix 前缀,表示jstl的标签的前缀,可以使用任何字母(但是一般都用c)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
if语句
<%
request.setAttribute("age",41);
request.setAttribute("name","");
%>
<!--
c:if 是否成立,要根据test中的返回结果,但是test必须是EL
jstl中只有c:if 没有else
-->
<c:if test="${requestScope.age gt 18}">成年人</c:if><br>
<!-- 多条件判断 -->
<c:if test="${empty requestScope.name && requestScope.age > 18}">
性别为空,是成年人
</c:if><br>
choose语句
<% request.setAttribute("age",41); %>
<!--
有点类似switch语法
-->
<c:choose>
<c:when test="${requestScope.age > 40}">中年人</c:when>
<c:when test="${requestScope.age > 30}">壮年人</c:when>
<c:when test="${requestScope.age > 18}">成年人</c:when>
<c:otherwise><!-- 否则的意思 -->
未成年人
</c:otherwise>
</c:choose><br>
for循环
<!-- 相当于for(int i = 1; i <= 10; i++) -->
<h2>循环</h2>
<!-- begin开始的值 end结束的值 var定义变量名 step每次加几 -->
<c:forEach begin="1" end="10" var="i" step="1">
${i}
</c:forEach>
<!--
items 取出集合数据
var 遍历的时候的变量名
varStatus 变量的状态,用的不多
first 是否为第一条数据
last 是否为最后一条数据
index 数据的索引
count 第几条数据
-->
<c:forEach items="${requestScope.userList}" var="u" varStatus="status">
<!-- u.name 在底层还是用 u.getName来获取的 -->
${u.name}--
${u.password}--
${status.first}--
${status.last}--
${status.index}--
${status.count}<br>
</c:forEach>