您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
05-JSTL-if&foreach(解决jsp混写if与foreach循环嵌套的拙劣)
发布时间:2024-12-03 13:16:38编辑:雪饮阅读()
-
JSTL就是JSP标准标签库(Jsp Standarded Tag Library),使用标签取代JSP页面上的Java代码。
要使用JSTL,需要pom.xml中导入坐标。
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
然后我们要定义标签前缀,比如这里标签前缀定义为“c”
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
uri这里是暂时固定为http://java.sun.com/jsp/jstl/core
if标签
一个最简单的if标签可以像是这样,if标签里面可以嵌入纯文本或html
<c:if test="true">
true<h1>true</h1>
</c:if>
那么也可以与el表达式结合,则servlet中定义转发共享的变量如
request.setAttribute("status",1);
response.setContentType("text/html;charset=utf-8");
request.getRequestDispatcher("/jstl.jsp").forward(request,response);
所以,在这个jsp页面中就可以使用el表达式与if标签的配合使用如:
<c:if test="${status == 1}">
<h1>status</h1>
</c:if>
不过访问时候就改为访问servlet,而不是直接访问jsp,如访问servlet:
http://localhost:8080/jspProjectModule/JstlServlet
if标签没有else,其实这个我觉得也是无所谓,我本来在有else的时候也不怎么喜欢else。
foreach标签
foreach标签的数据来源items也是从servlet中来的,其var则是表示循环的每个item对象名,而在foreach中嵌套过程用”var.属性名”的方式来获取每个item的属性,获取的原理是你的属性名首字母大写并在其前面加上get,也就是利用getter的方法取获取的,所以你的POJO实体类中必须有对应属性的getter方法(这就是el表达式获取属性的原理
),而varStatus则是用于定义一个从循环中获取index索引以及当前是第几个item的计数等信息,一般常用就是index和count。同样foreach标签还可以嵌套if标签。
所以我们可以再次对前番的品牌数据遍历进行一次。
首先servlet中共享数据
List<Brand> brands = new ArrayList<Brand>();
brands.add(new Brand(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));
brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));
request.setAttribute("brands",brands);
那么jsp页面中进行遍历则如:
<c:forEach items="${brands}" var="brand" varStatus="status">
<tr>
<th>${status.count}</th>
<th>${status.index}</th>
<th>${brand.id}</th>
<th>${brand.brandName}</th>
<th>${brand.companyName}</th>
<th>${brand.ordered}</th>
<th>${brand.description}</th>
<th>
<c:if test="${brand.status == 1}">
启用
</c:if>
<c:if test="${brand.status == 0}">
禁用
</c:if>
</th>
<th>操作</th>
</tr>
</c:forEach>
当然foreach也能像普通for循环一样不需要循环的数据源,定义循环自增变量与步长以及end条件。
<c:forEach begin="0" end="10" step="1" var="i">
${i}
</c:forEach>
关键字词:jstl,if,foreach
相关文章
- 12-删除功能(delete、foreach标签,collection,item,separ
- 10-查询-动态条件查询(if、where、choose、when、othe
- mac连接windows文件共享cifs/smb
- 【Shopify教程合集】180步让全新Shopify从0到暴富 -
- 1期-入门Shopify-1-7步-2020更新
- 前言-2020-9月更新(Shopify)
- 11生命周期函数完整(v-if,数据更新)
- tol24.com11-1(Trouble is part of your life)
- tol24.com08-3(fifteen)
- 08-Maven坐标(groupId,artifactId,version)