你的位置:首页 > Java教程

[Java教程]java学习笔记—JSTL(37)


在前面的开发中我们会发现经常无法避免在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"%>

<%@taglib uri="http://java.sun.com/jsp/jstl/

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引入

  1. 在web项目中导入jstl的jar包。如果创建的5.0的javaee项目那么自动引入。
  2. 如果需要在JSP页面中使用该抱歉库,那么必须使用taglib指令引入到当前的页面

<%@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=""        输出的默认值escape="">     是否以</c:out>

举例:

<c:out value='<%=pageContext.getAttribute("name",PageContext.REQUEST_SCOPE)%>' escape"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>