- JSTL
- JSTL - 核心标记库
- 变量支持标记
- c:set标记用于定义变量或修改变量的值
- c:set设置已经存在的变量的值就是修变量的值
- 如果不需要一个变量了,可用c:remove标记移除变量
- 程序控制标记
- if 标记-用于执行逻辑判断
- c:choose标记-相当于if....else if....else if....else
- forEach标记-用于执行循环任务,就是重复的任务,可进行简单的循环,也可用于遍历数组或集合
- 使用forEach执行简单循环
- 使用forEach遍历集合
- JSP Standard Tag Library - JSP 标准标记库
- JSTL 是一个标准标记的集合,它可以让您再 JSP 页面中使用标记而不是 Java 代码执行任务
- JSTL 分为以下几组
- 核心标记库:包含执行基本功能的一些标记,如循环
JSTL - 核心标记库 变量支持标记 c:set标记用于定义变量或修改变量的值使用 JSTL 需要添加 JSTL 相关的库,tomcat 服务器不包含 JSTL 的库
所以,使用 tomcat 服务器的情况下,要单独添加 JSTL 相关的 jar 包
c:set标记用于定义变量或修改变量的值,常用属性有:
- var:用于指定变量的名称
- value: 指定变量的值,也可用表达式指定值
- scope: 指定变量的作用域,四个值:page(默认) | request | session | application
A. 定义不同范围的变量
<c:set var="number1" value="100" scope="page" />
<c:set var="number2" value="200" scope="request" />
<c:set var="number3" value="300" scope="session" />
<c:set var="number4" value="400" scope="application" />
B. 变量的值也可使用EL表达式或java表达式指定
<c:set var="number5" value="<%=200 + 300%>" />
<c:set var="number5" value="${200 + 400}" />
C. 也可在标记内容中给出变量的值
<c:set var="number7">
${300 + 400}
c:set>>
使用变量的值,直接使用EL表达式 *** 作变量即可,${变量名},其实就相当于不同域对象中的属性
<p class="content">
number1的值:${number1}
<br>number2的值:${number2}
<br>number3的值:${number3}
<br>number4的值:${number4}
<br>number5的值:${number5}
<br>number6的值:${number6}
<br>number7的值:${number7}
p>
c:set设置已经存在的变量的值就是修变量的值
将number1的值在原来的基础上加上1000
<c:set var="number1" value="${number1 + 1000}" />
<p class="content">
number1的值:${number1}
p>
如果不需要一个变量了,可用c:remove标记移除变量
<c:remove var="number1" scope="page"/>
<p class="content">
number1的值:${number1}
p>
程序控制标记
if 标记-用于执行逻辑判断
常用属性有:
- test:指定判断的表达式,如果test的表达式成立,执行if的标记内容,否则不执行不执行标记内容
- var:如果需要存储表达式的判断结果,可指定一个变量名
- scope:scope指定变量的范围
<c:set var="salary" value="6000" />
<c:if test="${salary >= 5000}" var="result" scope="page">
<p>恭喜你,称为纳税人!!!p>
c:if>
<p>
表达式判断结果存入result的值:${result}
p>
c:choose标记-相当于if…else if…else if…else
c:when标记用于判断一种情况,如果成立,执行when标记内容
c:otherwise标记指定当所有的when都不成立的时候,执行otherwise标记的内容
choose中只会执行一种情况,哪个when先成立,就执行那个when标记的内容。
<c:choose>
<c:when test="${score >= 60}">
<p>恭喜你,通过了考试~~~p>
c:when>
<c:otherwise>
<p>很遗憾,你挂科了!!!p>
c:otherwise>
c:choose>
c:choose 中最好不要写注释
c:choose 中的语句只会输出一条,多个条件之间是互斥的关系 相当于 if … else if … else if … else …
<c:set var="salary" value="120000" />
<c:choose>
<c:when test="${salary <= 5000}">
<p>恭喜你,不用交税!p>
c:when>
<c:when test="${salary <= 10000}">
<p>小土豪!p>
c:when>
<c:when test="${salary <= 100000}">
<p>大土豪!!p>
c:when>
<c:otherwise>
<p>大大大土豪!!!p>
c:otherwise>
c:choose>
forEach标记-用于执行循环任务,就是重复的任务,可进行简单的循环,也可用于遍历数组或集合
forEach可用于执行普通循环或遍历集合或数组,常用属性有:
- items:指定要遍历的集合,一般用EL表达式获取
- var: 一个变量名,用于代指遍历到的当前元素,nameList集合中每个元素都是一个字符串
- var定义的变量只能在forEach循环内使用,通过EL表达式使用该变量${变量名}
- step:只能是一个正数,用于指定增长的步长,默认值为1
<p>
<c:forEach begin="1" end="3">
| I love you !!! |
c:forEach>
p>
var 用于指定一个变量名,表示当前元素,可以在循环中使用 EL 表达式来 *** 作该变量
<p>
<c:forEach begin="1" end="10" var="i" step="2">
${i}
c:forEach>
p>
使用forEach遍历集合
A. 遍历集合1 - 遍历固定的集合
- items 属性用于指定要遍历的数组或集合
- var 属性用于指定一个变量,表示遍历当前的元素,属性定义的变量只能在循环内使用,可以使用 EL 表达式访问该变量
- 如果指定了 item 属性,那么begin 和 end 表示元素的起始和结束索引,索引从0开始
- 如果指定了 item 、begin、end 属性,那么 step 步长用于指定索引增长
<p>
<c:forEach items="11,22,33,44,55,66,77" var="item">
${item} |
c:forEach>
p>
<p>
<c:forEach items="11,22,33,44,55,66,77" var="item" begin="1" end="3">
${item} |
c:forEach>
p>
<p>
<c:forEach items="11,22,33,44,55,66,77" var="item" begin="0" end="3" step="2">
${item} |
c:forEach>
p>
B. 遍历集合2
<%
List<String> nameList = new ArrayList<>();
nameList.add("小胖");
nameList.add("小兰");
nameList.add("小强");
nameList.add("小呆");
//为了在EL表达式中可以 *** 作该集合,需要将其作为属性添加到四个域对象中
pageContext.setAttribute("list1", nameList);
List<Dog> dogList = new ArrayList<>();
dogList.add(new Dog("毛毛", "哈士奇", 2));
dogList.add(new Dog("强强", "泰迪", 1));
dogList.add(new Dog("二哈", "边牧", 3));
dogList.add(new Dog("乐乐", "单身狗", 20));
request.setAttribute("list2", dogList);
List<Product> productList = new ArrayList<>();
productList.add(new Product("P001", "avocado", 10));
productList.add(new Product("P002", "papaya", 4));
productList.add(new Product("P003", "pitaya", 5));
productList.add(new Product("P004", "orange", 4));
session.setAttribute("list3", productList);
Map<String, String> map = new HashMap<>();
map.put("2020201111", "Anna1");
map.put("2020201112", "Anna2");
map.put("2020201113", "Anna3");
map.put("2020201114", "Anna4");
pageContext.setAttribute("studentMap", map);
%>
遍历List集合
<p>
<c:forEach items="${pageScope.list1}" var="name">
${name} |
</c:forEach>
</p>
<p>
<c:forEach items="${requestScope.list2}" var="dog">
${dog.name} | ${dog.type} | ${dog.age} |
</c:forEach>
</p>
<p>
<c:forEach items="${sessionScope.list3}" var="product">
${product.productId} | ${product.productName} | ${product.productPrice} |
</c:forEach>
</p>
遍历map集合
<c:forEach items="${studentMap}" var="student">
<p>
${student.key} | ${student.value}
</p>
</c:forEach>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)