概念
Java Server Pages (JSP) 标准标记库 (JSTL)的版本的发布对于 JSP/servlet开发者来说是一个重大的进展。有了一个表达语言(EL) 和一组四种强大的、易于学习的标准标记库,JSTL极有可能不久后成为实 现动态的、基于Java的站点的主要方法。 1996年对JSP servlet的介绍使得Java成为动态网页开发的合理的选择。 随后出现的Java服务器页(JSP)是走向快速的、可维护的Java网页实现 过程的合理进化的一步,紧接着就出现了JSP标记的支持。但是2002中 期的JSTL(JSP标准标记库)的发布才是进一步加速和简化开发过程最大 的一步。 JSTL是Java中的一个定制标记库集。JSP标准标签库(JSTL)是一个JSP 标签集合,它封装了JSP应用的通用核心功能。JSTL支持通用的、结构化的任务, 比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它 还提供了一个框架来使用集成JSTL的自定义标签。
作用
1)实现了JSP页面的代码复用。基于标签库原理,重复率较高的代码块支持复用, 提高效率。 2)书写JSP页面时可读性更强。长得像XML,方便前端查看和参与开发。 3)在应用程序服务器之间提供了一致的接口,最大程度地提高了WEB应用在各应用 服务器之间的移植。 4)简化了JSP和WEB应用程序的开发。
标签使用
c:out 输出标签//1.常量输出<c:out value = "123"></c:out><c:out value = "abc"></c:out><c:out value = "true"></c:out>//2.变量输出//定义变量//pageContext:是在整个Web应用上都是有效的,//可以理解为所有的网页,因为这个对象是常常用来共享资源的,//也就是用户1提交了一个资源,放到了pageContext作用域中,其它用户也可以看到这个资源。//setAttribute:添加指定的属性,并为其赋指定的值。<%pageContext.setAttribute("j",2);%>//定义好变量后 开始输出j=<c:out value="${j}"></c:out>//3.转义输出<c:out value = "<a href = '跳转目的地路径'>跳转</a>"></c:out>//4.输出默认值<%pageContext.setAtribute("a",4);%>//如果"${a}"不存在 输出 default的值 也就是 a=3(正常的话 a=4)a = <c:out value="${a}" default="3"></c:out>c:set 赋值标签
//将 名字(var)为: JSTL标签之一 值为: c:set 的数据 存到 作用域page 中<c:set var = "name" value = "c:set" scope = "page"></c:set>//取值//通过名字获取它的值name=${pageScope.name}//2.向map中添加,修改键值对<%Map<String,String> map = new HashMap<String,String>();map.put("husband","丈夫");map.put("wife","妻子");//存到作用域中pageContext.setattribute("map",map);%>//修改 map中的值<c:set property = "brother" value = "哥哥" target = "${map}"></c:set>brother=${map["brother"]}<c:set property = "sister" value = "妹妹" target = "${map}"></c:set>sister=${map["sister"]}c:remove 删除标签
//先赋值在删除//单个删<c:set var = "name" value = "c:out" scope = "page"></c:set><c:set var = "name" value = "c:set" scope = "request"></c:set><c:remove var = "name" scope = "page"/>name=${name}//全删<c:set var = "name" value = "c:out" scope = "page"></c:set><c:set var = "name" value = "c:set" scope = "request"></c:set><c:remove var = "name"></c:remove>name = ${name}c:forEach 两种for循环
//简介< c:forEach items="要被循环的信息" begin="开始的元素" end="最后一个元素" step="每一次迭代的步长" var="代表当前条目的变量名称" varStatus="代表循环状态的变量名称" > //增强for循环 //先定义输出内容 <% List<String> list = new ArrayList<String>(); //添加数据 list.add("J"); list.add("S"); list.add("T"); list.add("L");%>//接收要输出的数据对象 //var:当前输出内容所存在的地方 <c:forEach items="${list}" var="str"> //页面输出:接受页面输出内容 list=${str}<br> </c:forEach>//普通for循环<c:forEach begin="0" end="4", step="1" varStatus="vs"> HELLO JSTL <br> index=${vs.index} count=${vs.count} first=$(vs.first)</c:forEach> //小程序测验 //打印10到100之间所有的偶数,把下坐标是3的倍数改成红色 //从 10 开始输出到 100,之间间隔为2(原本是11 12 13 ---》现在是10 12 14 ) //输出的数存到 var 定义的 num //varStatus是循环中的数 <c:forEach begin="10" end="100" step="2" var="num" varStatus="vs2"> //将循环中的数进行判断(vs2.count 就是它的坐标(10 12 14) 其中14的坐标就是3,也就是3的1倍数) //如果它是3的倍数就变红<c:if test="${vs2.count%3==0}" var = "flag"> //定义颜色 <font color = "red">${num}</font> </c:if> //上面判断的时候定义 flag 是符合要求的数 //所以这里直接 定义 !flag 就可以了 <c:if test="${! flag}"> //定义颜色 <font color="blue">${num}</font> </c:if> </c:forEach>c:forTokens 标签切割
<c:forTokens items="需要切割的数据" delims="以什么切割" var="输出内容" > 页面显示 </c:forTokens> //实例 <c:forTokens items = "1,2,3,4" delims="," var="sc"> sc=${sc} </c:forTokens>c:url 在需要的时候会自动重写URL
//实例<a href="<c:url value="转页面的地址"/>">点击转页面</a>