在前面的开发中我们会发现经常无法避免在jsp中或多或少的出现各种JSP脚本片段,那么导致页面美工人员无法对其很好的维护。因此今天的技术可以帮助开发人员快速减少JSP中脚本的出现。
JSTL简介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"%>
1 JSTL引入
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
2 体验
<%@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>
新闻热点
疑难解答