JSTL即Jsp Standard Tag Libraries即Jsp的标准标签库。该技术提供了很多的标签用于封装JSP中常用的一些基本的业务逻辑。
主要的分类如下:
核心库:主要封装的是一些基本的核心的业务逻辑。
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
格式化和国际化库:主要封装的是一些进行数据格式化和国际化的业务。如:日期格式化。
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f"%>
XML库:主要封装的是一些解析XML数据的业务逻辑。
<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="xml"%>
SQL库:主要封装的是操作数据库的业务逻辑。
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
函数库:主演封装的是常见函数。如:String
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fun"%>
JSTL引入
- 在web项目中导入jstl的jar包。如果创建的5.0的javaee项目那么自动引入。
- 如果需要在JSP页面中使用该抱歉库,那么必须使用taglib指令引入到当前的页面
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
体验
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:out value="<%= 23 == 23 %>"></c:out>
以上的标签可以将如下的输出语句进行避免
<%
out.println(“”)
%>
核心库标签 1. c:out <c:out -> 输出标签 value="" -> 输出的内容,可以是输出表达式<%= %> default="" -> 输出的默认值 escapeXml=""> -> 是否以xml方式输出数据 </c:out> 举例: <c:out value=‘<%=pageContext.getAttribute("name",PageContext.REQUEST_SCOPE)%>‘ escapeXml="false"></c:out> 2. c:set <c:set -> 设置一个域或者集合中的属性 var="" -> 指定域中的属性名 value="" -> 指定域中的属性值 scope="" -> 指定域对象 target="" -> 指定集合名 property=""> -> 集合的属性名 </c:set> 举例: <c:set var="psw" value="root" scope="page"></c:set><br/> <c:out value=‘<%=pageContext.getAttribute("psw",PageContext.PAGE_SCOPE)%>‘></c:out> 举例: <!-- map.put("qq","123456789") --> <c:set target="<%= map %>" property="qq" value="123456789"></c:set> <%= map.get("qq") %> 3. c:remove <c:remove -> 删除域中的属性 var="" -> 指定属性名 scope=""/> -> 指定域名 4. c:catch <c:catch var=""> -> 处理异常,指定异常对象以什么属性存储在page域 </c:catch> 举例: <c:catch var="error"> <%= 12/0 %> </c:catch> 异常消息是: <c:out value=‘<%= ((Exception)pageContext.getAttribute("error",PageContext.PAGE_SCOPE)).getMessage() %>‘></c:out> 5. c:if 判断语句 <c:if test=””> -> 指定的条件语句 -> 如果成立执行标签体内容 </c:if> 举例: <c:if test=‘<%= pageContext.getAttribute("list",PageContext.SESSION_SCOPE) == null %>‘> <font color="red">数据为空!</font><br/> </c:if> 6. if…selse <c:choose> -> 外部选择 <c:when test=""> -> 指定的是条件语句 </c:when> <c:otherwise> -> 条件不成立 </c:otherwise> </c:choose> 举例: <c:choose> <c:when test=‘<%= "jack".equals("jack") && "root".equals("root2") %>‘> <c:out value="欢迎"></c:out> </c:when> <c:otherwise> <c:out value="注册"></c:out> </c:otherwise> </c:choose> 7. c:forEach 循环(重点) <c:forEach -> 循环 begin="" -> 循环的开始值 end="" -> 循环结束的值 step="" -> 循环的步长 var="" -> 将循环出来的数据已指定的属性名放置在page域 items="" -> 循环的集合数据 varStatus=""> -> 循环的状态对象 </c:forEach> 举例: <c:forEach begin="0" end="10" var="i"> <c:out value=‘<%= pageContext.getAttribute("i",PageContext.PAGE_SCOPE) %>‘></c:out><br/> </c:forEach> 举例: <% List<String> list = new ArrayList<String>(); list.add("aaaa"); list.add("bbbb"); list.add("cccc"); session.setAttribute("list",list); %> <!-- pageContext.setAttribute("str","aaaa",PageContext.PAGE_SCOPE) --> <c:forEach items=‘<%=pageContext.getAttribute("list",PageContext.SESSION_SCOPE) %>‘ var="str"> <c:out value=‘<%= pageContext.getAttribute("str",PageContext.PAGE_SCOPE)%>‘></c:out><br/> </c:forEach> 举例: <c:forEach items=‘<%=pageContext.getAttribute("list",PageContext.SESSION_SCOPE) %>‘ var="str" varStatus="status"> <c:choose> <c:when test="${status.count % 2 == 0}"> <tr bgcolor="red"> </c:when> <c:otherwise> <tr bgcolor="yellow"> </c:otherwise> </c:choose> <td> <c:out value=‘<%= pageContext.getAttribute("str",PageContext.PAGE_SCOPE)%>‘></c:out> </td> </tr> </c:forEach> 举例: <table align="center" border="1"> <!-- pageContext.setAttribute("str","aaaa",PageContext.PAGE_SCOPE) --> <c:forEach items=‘<%=pageContext.getAttribute("list",PageContext.SESSION_SCOPE) %>‘ var="str" varStatus="status"> <tr bgcolor=‘${ status.count % 2 == 0 ? "gray" : "pink" }‘> <td> <c:out value=‘<%= pageContext.getAttribute("str",PageContext.PAGE_SCOPE)%>‘></c:out> </td> </tr> </c:forEach> </table> 8. c:url <c:url var="" -> 指定属性的名字 value="" -> 指定属性的值 scope="" -> 指定域 context=""> -> 指定网站 </c:url> 举例: <c:url var="index" value="http://www.itcast.cn" scope="page"> <c:param name="name" value="焦宁波"></c:param> </c:url> 9. c:redirect 重定向 举例: <c:redirect url="/list" context="/day09_example"></c:redirect> 10. c:forTokens <c:forTokens items="james,jack,lucy,jnb" delims="," step="1" var="name"> <c:out value=‘<%= pageContext.getAttribute("name",PageContext.PAGE_SCOPE) %>‘></c:out><br/> </c:forTokens> 11. c:import标签 引入页面 <c:import url="test.jsp"></c:import>