Java之JSTL的基础运用
jstl简介
JSTL(java Server Pages Tag Library),是jsp的标签库。用于简化jsp中的java脚本,因为EL能力有限,EL只能取出域对象中的参数,所以就有了JSTL,与EL相辅相成,共同完成页面输出。
JSTL的使用需要先导入jar包,然后使用taglib指令引入标签库。
jstl的jar包的导入
直接去Maven*仓库下载jar包
链接: https://mvnrepository.com/
下载之后将jar包复制到WEB-INF下面(增加隐蔽性),鼠标右键该jar包,点击“Add as Library”,点击ok。再使用taglib指令导入标签库:<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
如果运行的时候控制台报如下错误,就说明jar包没有完全导入:
我们继续点击IDEA右上角的图标,选中当前的项目,点击“Artifacts”,在圆圈的地方会出现一个“fix”按键,点击,选第一个,然后apply,即可解决该问题。具体操作如下:
if标签
使用方式:
1.
<c:if test="${}"> //{}里面为判断条件
</c:if>
<c:if test="true"> //直接设置test的Boolean值,true/false
</c:if>
这里面的c是前缀,我们可以在代码中设定。实例如下:
图中红色圈中的c即为前缀,前缀不固定,自己随意设定。
choose标签
choose标签可以理解为一个多重if else
用法示例:
//用c:set标签代替脚本,向域对象中存值
<c:set var="month" value="8" scope="request"></c:set>
<c:choose>
<c:when test="${month>=12&&month<=2}">
<c:out value="winter"></c:out>
</c:when>
<c:when test="${month>=3&&month<=5}">
spring
</c:when>
<c:when test="${month>=6&&month<=8}">
<c:out value="summer"></c:out>
</c:when>
<c:when test="${month>=9&&month<=11}">
autumn
</c:when>
<c:otherwise>月份数值错误</c:otherwise>
</c:choose>
同样,也可以用c:out标签代替out.write()来输出。在html中直接写也能展示出来。
foreach标签
1.普通for循环
以遍历为例,
用jstl实现遍历的示例:
<c:forEach begin="0" end="9" var="i" step="1">
${i}
</c:forEach>
begin(开始) end(结尾) var(变量)step(步长)
这个地方我们取值用的是${i}(即EL),那么 i 肯定是在域对象中,但是从代码中看,我们并没有将 i 存进域对象,所以在这里foreach默认会将var中的变量值存进pageContext域对象,这样我们才能直接取出 i 。
用Java实现遍历的示例:
<%--java-版--%>
<%
for (int i=0;i<10;i++){
System.out.println(i);
}
%>
这个是在控制台进行输出。
2.增强for循环
这个我们对数组进行遍历
//Java版
<%
int[] arr={1,3,5,7,9};
//将arr数组存进域对象
request.setAttribute("arr",arr);
%>
<c:forEach items="${arr}" var="a">
${a}
</c:forEach>
几个细节问题:
1.items属性:使用el从域对象中取出集合或数组。
2.foreach会遍历集合或数组,将遍历的每一个元素的值赋给var中的变量a。
3.var属性:将定义的变量a存进最小域对象pageContext中,因此后面才能通过${a}取出域对象中的参数值
关于jstl的分享就到这了,如有其他问题,还请各位大佬多多指正。
本文地址:https://blog.csdn.net/weixin_49379854/article/details/107564652
上一篇: JS--常见面试题整理(附答案)
下一篇: 用JS写一个发布订阅模式