1、JSTL定义:Javaserver page standard tag library , 中文名称是Java服务器页面标准标签库,即JSP标准标签库。
2、JSTL的分类
1核心标签库:重点
2.I18N国际化标签库:了解
3.SLQ标签库:基本不用
4. XML标签库:基本不用
5.函数标签库:基本不用
1、这些JSTL的标签库支持EL表达式语言,即可以在其标签的value属性中使用EL来在JSP页面上输出域对象中的值。一般JSTL也要结合EL表达式来完成JSP页面的开发。
2、大部分标签的显示值或者传入值或者输出值都必须使用EL表达式通过域对象完成操作,而不可以直接使用Java对象来当做值。
3、核心标签库的分类
1.表达式操作:out/set/remove
out标签:和EL表达式的功能一致,都是将域对象中的属性的值输出到JSP页面上,但是比EL表达式的功能更强,可以自动转义,例如:输出<>这个字符串就无法使用EL表达式完成,但是却可以使用out的标签结合EL表达式完成。<c:out value="${}">
set标签:这个标签一是可以将Java变量的键值对放入到域对象中,如:<c:set var=“name” value=“liucc” scope=“page”></c:set>
2.流程控制:if/choose/when/otherwise
<c:if />标签:这个标签没有else if /else操作,但是可以将判断内容的返回值true/false保存在域对象中供下次使用,如:<c:if test="${requestScope.user.id>20}" var=“id” scope=“page” ><c:if><c:choose><c:when></c:when><c:otherwise></c:otherwise></c:choose>可以实现if00else if – else的操作,但是有点麻烦。
3.迭代操作:forEach/forTokens
<c:forEach />:这个标签可以循环遍历数组、集合、Map。
各个属性:items表示正在遍历的集合/Map/数组。var表示集合/Map/数组中正在遍历的对象。begin表示开始遍历的下标位置(需要注意的是:这个下标位置和对象所在的容器当中的下标位置是一致的)。end表示结束遍历的下标位置。varStatus这个标识正在遍历对象的状态信息,如此对象所在容器中的索引位置等等信息
4.URL操作:forward/url/import
<c:redirect url="" />:这个标签可以重定向请求到新的页面。需要注意的是,这个标签中的/代表的是当前WEB应用的根目录,因为他首先是一个标签,需要web服务器来先进行解析。而response.sendRedirect()方法中的/代表的是当前站点的根目录,因为他发送了两次请求,第一次请求的响应需要先交给浏览器处理。我们还可以使用<jsp:forward url="" />来转发到一个页面。
<c:import url="" />:这个标签可以将任何的页面包含到当前页面。
<c:url value="" var="" scope="" /> :这个标签标示产生一个URL地址,可以将其存入到域对象中,并且可以智能的判断cookie是否需要智能的进行URL重写(即当cookie禁用时,将JSESSIONID放入到URL的后边传递)。其中的value属性值的/代表当前WEB引用的根目录,因为它首先是一个标签,需要交由WEB服务器去测试。·