JSTL标签库

it2022-05-05  157

一、JSTL的概念:

JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标签库有5个子库,但随着发展,目前常使用的是他的核心库。 JSTL不是JSP内置的标签,需要自己导包和指定标签库。用MyEcilpse开发JavaWeb时,lib目录下回存放JSTL的jar包,其他工具需要自行导包:jstl-1.2.jar。

二、JSTL的作用

提升JSP中逻辑代码的编码效率。

三、使用JSTL标签库

1)标签库

核心标签库(重点学习,其他了解即可)格式化标签库函数标签库XML标签库SQL标签库 2)流程: 1.导包 2.使用taglib标签导入资源 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

3.核心标签库 4.格式化标签库

四、内容*

1)out标签

<c:out value="${表达式}" default="默认值"></c:out>

作用结合EL表达式将数据响应给浏览器,如果EL表达式没有获取到数据可以用default属性声明默认值 2)set标签:

<c:set value="数据" var="键名" scope="作用域名"></c:set>

作用:将数据存储到指定的作用域中,默认是pageContext; 注意:scope的值为:page/session/request/application

3)remove标签

<c:remove var="要删除的数据键名" scope="作用域名"/>

作用:删除作用域中的数据,默认是全部删除 但是可以用scope属性指定要删除的对象所在作用域

注:

<% pageConetxt.removeAttribute("hello"); %>

这句话会把所有"hello"标签删除,其余像session.removeAttribute()、application.removeAttribute()、request.removeAttribute()则不会,只删除当前作用域符合要求的数据 或者使用下面这句来指定删除的作用域,scope的值为1.pageContext、2.request、3.session、4.application

<% pageConetxt.removeAttribute(String name,int scope); %>

4)if标签 单分支逻辑判断标签

<c:if test="表达式"> 数据 </c:if>

作用:使用EL表达式进行一定程度上的单分支逻辑判断 注意:test属性中书写的是EL表达式,或者说是EL表达式的逻辑表达式 该标签只能进行EL表达式相关的逻辑判断,不能进行EL表达式不能获取的作用域数据的逻辑处理

多分支逻辑判断标签

<c:choose> <c:when test="表达式"> </c:when> <c:when test="表达式"> </c:when> <c:when test="表达式"> </c:when> 。。。 <c:otherwise></c:otherwise> </c:choose>

注:符合条件后只会实现一个分支

5)循环标签

<c:forEach> 循环体 </c:forEach>

属性: begin:声明循环的开始位置 end:声明循环的结束位置 step:声明循环的步长 varStatus:声明变量记录循环状态 注意:记录的数据存储到了作用域中可直接用EL表达式获取 示例:i ${i.index}获取单次循环的下标 ${i.count}获取单次循环的次数 ${i.first}判断是否是第一次循环 ${i.last}判断是否是最后一次循环

${i.index}--${i.count}--${i.first}--${i.last}

items:声明要遍历的数据,可以是集合或数组等 var:声明变量,记录每次遍历的结果,可以在循环体中直接使用EL表达式查看循环次数 遍历数据:

<% //创建测试数据list ArrayList<String> list=new ArrayList<String>(); list.add("苹果"); list.add("荔枝"); list.add("榴莲"); //将list存储在作用域中 request.setAttribute("list", list); %> <c:forEach items="${list}" var="s" varStatus="i"> ${s}---${i.index}<br/> </c:forEach> <br/>

遍历HashMap

<% //声明map集合测试数据 HashMap<String,String> hs=new HashMap<String,String>(); hs.put("s1","唱歌"); hs.put("s2", "跳舞"); hs.put("s3","敲代码"); //将数据存储到作用域中 request.setAttribute("hs", hs); %> <c:forEach items="${hs}" var="s" varStatus="i"> ${s}---${i.index}<br/> ${s.key}--${s.value}<br/> </c:forEach>

最新回复(0)