写在前面
JSTL:是一种比比EL更加强大的语法,这篇文章主要介绍JSTL概念及其简单使用,想了解EL语法可以移步至这篇文章:EL表达式语法
使用
使用前需要引入2个jar :(点击jar包直接下载)
然后在jsp头部引入tablib
<%@ taglib uri=”http:// java. sun. com/ jsp/ jstl/core" prefix="c”>'
其中prefix=”c”代表前缀,在没有特别声明的情况下一般用c。
核心标签库
三个:通用标签库、条件标签库、迭代标签库
一、通用标签库
- <c:set>:赋值
在某个作用域之中(4个范围对象),给某个变量赋值
//以前是这样子赋值的
<%request. setAttribute("name"," zhangsan") ;%>
//<c:set var="变量名” value="变量值” scope=" 4个范围对象的作用域”/>
//现在是这样子赋值的
<c:set var= "name " value= "zhangsan" scope= "request"/>
除此之外,还可以在某个作用域之中(4个范围对象),给某个对象的属性赋值,还可以给map对象的属性赋值。值得注意的是,它还可以给不存在的变量赋值,但是不可以给不存在的对象赋值。
给map对象赋值
<c:set target=" $ {requestScope.countries}" property="cn" value="中国"/>
//<c:set target="对象" property="对象的属性" value="赋值"/>
- <c:out>:用于显示操作
//传统EL
${requestScope.student }<br/>
//c:out方式:
<c:out value= "${requestScope. student}"/>
那么<c:out>相较于传统EL的优势在于哪?
a:<c:out>其实后面还有一个参数default(默认值),当你显示的这个对象不存在的时候,他会显示默认值
//假设我们有student这个对象而没有stu这个对象,所以<c:out>没有stu的值可以显示
// 那么他就显示后面default的值zs
<c:out value= "${requestScope. stu}" default="zs"/>
b:excapXml:用于设置超链接
true:<c:out value='<a href= "https://www.baidu.com">百度</a>' escapeXml="true"/>
false:<c:out value='<a href= "https://www.baidu.com">百度</a>' escapeXml="false"/>
运行效果如图
如果你的值设置为true,那么他就会将链接和字符显示出来,如果设置为false,则会显示超链接。
- <c:remove />:删除值
//设置一个值a
<c:set var="a" value= "b" scope= "request"/><br/>
//删除值a
<c:remove var="a" scope= "request ' '/>
二、条件标签库
- <c:if>:boolean
<c:if test="${10>2}" scope="request" var= "result" >
${result}
</c:if>
//这段代码会判断test里的内容,然后输出var里的内容(true/fales)
输出结果为true,其中作用域(scope=“request”)可以删除不写,理由设计到EL的内容,在本文开头有写,这里截出来方便查看
- <c: choose>:类似于java语法中的switch,通常和</c:when>、</c:otherwise>联用
我们用一个栗子来更好的理解他
//定义一个对象
<c:set var= "role" value="学生” scope= "request"></c:set>
<c: choose>
//当取到的值为“老师”时执行老师代码
<c:when test= "${ requestScope.role == '老师'}">
老师代码...
</c :when>
//当取到的值为“学生”时执行学生代码
<c:when test= "${ requestScope.role eq '学生' }">
学生代码...
</c:when>
//当取到的值为“管理员”时执行管理员代码
<C: otherwise>
管理员等其他人员....
</c:otherwise>
<c: choose/>
注意注意注意
在使用test=" " 一定要注意后面是否有空格,例如:
test=" ${10>2}" //true
test=" ${10>2} " //非true
三、迭代标签库
这里讲一个简单的**<c:forEach>**
先上代码
//相当于for(int i=0;i<5;i++)
<c:forEach begin="0" end="5" step="1" varStatus= "status">
//index为当前运行代码索引(标签号)
${status. index} test..
</c: forEach>
输出结果
0 test… 1 test… 2 test… 3 test… 4 test… 5 test…
ok,简单分享到这里,这是我本人的学习总结笔记,有错误的话欢迎大佬指出,本人会及时改正。