在学习jstl标签库的时候最常用的就是核心标签库了,虽然简单,但是在使用的时候依然会有一些踌躇。所以今天将这些常用的标签的使用方法做一个记录,以便以后查看和复习。
在使用jstl标签的核心库的时候要使用taglib标签引入相应的标签库,如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1. jstl常用标签
- 用于输出数据
<c:out></c:out>
属性 | 说明 |
---|---|
value | 要输出的内容 |
escapeXml | 是否忽略xml的特殊字符,默认为true,不使用转义,false使用转义 |
<c:out value="${200*2 }"></c:out><!-- 输出400 -->
<c:out value="<script> alert("你好")</script>"></c:out><!--输出<script> alert("你好")</script> -->
<c:out value="<script>alert('你好')</script>" escapeXml="false"></c:out><!--弹出警告框 你好-->
- 用于储存数据,相当于setAttribute()方法
<c:set></c:set>
属性 | 说明 |
---|---|
scope | 储存数据的域(jsp的四大域page,request,session,application) |
value | 要储存的数据 |
var | 储存数据的变量 |
property | 要修改变量的bean属性 |
target | 要修改变量的bean对象 |
<!-- 相当于request.setAttribute("message","Hello World");
<c:set scope="request" value="Hello World" var="message"></c:set>
使用property和target属性相当于<jsp:useBean id="" class=""></jsp:useBean>其中target相当于class属性,不常用。
<c:set target="xxx.Xxx" name="张三"></c:set>
- 删除一个数据,相当于removeAttribute()方法
<c:remove></c:remove>
属性 | 说明 |
---|---|
var | 要删除的属性名称 |
scope | 作用域 |
<c:remove var="message" scope="request"></c:set>
- if标签
<c:if test=""></c:if>
属性 | 说明 |
---|---|
test | 条件,一个boolean值 |
var | 用于存储条件结果的变量 |
scope | var属性的作用域(四大域) |
<c:if test="${message!=null }" var="test" scope="page">
欢迎进入if
变量的结果:${test }
</c:if>
- 选择标签,其中<c:choose>和<c:otherwise>标签没有属性,<c:when>的属性在下面给出
<c:choose> <c:when test=""></c:when> <c:otherwise></c:otherwise>
</c:choose>
属性 | 说明 |
---|---|
test | 条件,是一个boolean值 |
<!-- choose标签 -->
<c:choose>
<c:when test="${money >=100 }">
还不错呦
</c:when>
<c:when test="${money <100 }">
呵呵!
</c:when>
<c:otherwise>
什么都不是
</c:otherwise>
</c:choose>
- 循环标签,封装了Java里面的for循环和while循环
<c:forEach></c:forEach>
属性 | 说明 |
---|---|
items | 循环的内容,一般都是一个数组,map和set等 |
begin | 开始的位置,int类型 |
end | 结束的位置,int类型 |
step | 步长,相当于for循环里面的i++,默认是1,int类型 |
var | 当前循环内容的存储变量 |
varStatus | 当前循环内容状态的存储变量 |
<!-- 相当于for(int i ;i<=10;i++) -->
<c:forEach begin="0" end="10" step="1" var="i">
<c:out value="${i }"></c:out>
</c:forEach>
<br>
<!-- 相当于for(String str : name)用来循环数组 -->
<c:forEach var="name" items="${requestScope.name }">
<c:out value="${name }"></c:out>
</c:forEach>
<br>
<!-- 使用循环状态 -->
<c:forEach items="${name }" var="name" varStatus="vs">
值:${name };
循环次数:${vs.count };
循环下标:${vs.index };
是否是最后一个:${vs.last }
是否是第一个:${vs.first }
<br>
</c:forEach>
- 用来在url属性里面进行传值
<c:param></c:param>
属性 | 说明 |
---|---|
name | 要传的值的变量 |
value | 值的内容 |
- url标签,可以在基础的路径前面自动加上项目名,在传参数的时候可以自动进行url编码,可以让<c:param></c:param>作为子标签进行传值
<c:url></c:url>
扫描二维码关注公众号,回复: 9057623 查看本文章![]()
属性 | 说明 |
---|---|
value | 基础路径 如value=”/index.jsp“ |
var | 存储编码好的url的变量 |
scope | var作用的域 |
context | 当前的网络主机名 |
<c:url value="/index.jsp" var="url1">
<c:param name="name" value="你好!></c:param>
</c:url>
在写前端代码的时候使用java代码感觉不够优雅,所以抽时间学习了一些jstl的一些标签的使用,关于EL表达式还是有一些困惑,而我这个人又喜欢钻牛角尖,其实就是有一个问题,困扰我很久了就是,${ pageContext.request.attribute(“name”) }这个表达式为什么不能这个使用,按理说他相当于 <% pageContext.getRequest.getAttribute(“name”);%>但是,不能这样写。我经过了很多的尝试但是还是没有解决我的困惑,所以就交给时间吧!在以后实际的使用过程中遇到了可能就自然而然的迎刃而解了吧!
以后尽量多写一些有质量的文章,一来锻炼自己的写作能力,二来记录自己的学习过程,好以后复习。
路漫漫其修远兮,吾将上下而求索!