jstl标签库

jstl标签库常用的关键字有:

<c:if>、<c:else>、<c:choose>、<c:when>、<c:otherwise>、<c:foreEach>、<c:set>、<c:out>、<c:param>、<c:url>、<c:remove>、<c:redirect>、<c:import>.

 

jsp标准标记库(Java Standard Tag Library , JSTL)是由一组以标准化格式是现在许多通用的Web站点功能的定制标记。

 

JSTL的目标是为了简化JSP页面的设计,对于页面设计人员来说,使用脚本语言(默认是Java语言)操作动态数据是比较困难的,而采用标签和表达式语言相对容易一些,JSTL的使用为页面设计人员和程序开发人员的分工协作提供了便利。

 

一:配置JSTL

首先应该下载导入两个jar文件,分别是 jstl.jar 和 standard.jar .

配置代码引入:

 

 

 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
 
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> 
 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

二:core标签库

        core标签库主要包括了一般用途的标签,条件标签、迭代标签和URL相关的标签,在JSP页面使用Core标签,必须要使用taglib指令,指定引用的标签库,例如:

 

<%@ taglib rui=”http://java.sun.com/jsp/jstl/core” prefix=”c” %> 

 

一般用途的标签有:<c:out>、<c:set>、<c:remove>、<c:catch>

 

1.<c:out>

 

用于计算一个表达式并将结果输出。类似于JSP中的<%=%>表达式,或者是EL中的${el-expression}.

 

2:<c:set>

 

用于设置范围变量的值或者JavaBean对象的属性。

 

实例:

 

<c:set var="username" value="tom" scope="session"/>

 

 这就相当于设置了session

 

3:<c:remove>

 

相对于<c:set>来说,它的的作用是移除范围变量。比如:

 

<c:remove var="username" scope="session"/>

 

4:<c:catch>

 

用于捕获在其中嵌套的操作所抛出的异常对象,并将异常信息保存到变量中。

一般来说,我们将有可能抛出异常的代码放置到开始标签<c:catch>和结束标签</c:catch>之间。如果其中代码出现异常,异常对象将被捕获,保存在申明的变量中,该变量总是有page范围。如果没有发生异常,而var所标识的范围变量将被移除。

如果没有指定var属性,异常只是简单的被捕获,异常信息并不会被保存。

 

例子:

<c:catch var="exception">

<%

        int i = 5;

        int j = 0;

        int  k =i/j;

%>

</c:catch>

<c:out value="${exception}"/><br>

<c:out value="${exception.massage}"/>

后一句相当于:exception.getMessage()

条件标签包括:<c:if><c:choose><c:when><c:otherwise>

 

1:<c:if>

 

用于实现Java中的if语句功能。

 

<c:if test="${user.visitCount==1}">

 

    This is your first visit;

 

</c:if>

若为true,会打印中间部分。也可以声明var,方便下一步判断。

 

<c:if test="${param.name=='admin' value=""result}"/>

 

<c:out value="${result}"/>

 

2:<c:choose>

 

<c:choose>和<c:when>、<c:otherwise>一起实现互斥条件执行,类似于java中的if else

 

<c:choose>一般作为<c:when>、<c:otherwise>的父标签。

 

例如:

 

<c:choose>

    <c:when test="${row.value<100}">

        初级   

    </c:when>

    <c:when test="${row.value>=100&&row.value<1000}">

        中级   

    </c:when>

    <c:otherwise">

        高   

    </c:otherwise>

 

</c:choose>

 

迭代标签:

 

迭代标签有<c:forEach></forEach>

 

<c:forEach items="${yearList }" var="year">
        <option value="${year.culitBatchId}"
                <c:if test="${year.culitBatchId == yearId}">selected</c:if>>${year.cultivateBatchName}

        </option>
</c:forEach>

 

还可以设定固定次数:

<c:forEach var="i" begin="100" end="200" step="2">

        ${ i }

</c:forEach>

step="2" 表示每次增长数为2

 

三. sql 标签 
 
设置数据源: 
 
<sql:setDataSource dataSource="proxool.breadTycoon" /> 
 
// 将数据库某查询的结果声明为一个变量 
 
<sql:query var="finalResult" > 
 
    select player_name,money from tb_player order by money DESC LIMIT 10    
 
</sql:query> 
 
       然后可以: 
 
<c:forEach items="${ finalResult.rows}" var="row" varStatus="s"> 
 
        advCosts[${s.index}]=${row.adv_cost}; 
 
   </c:forEach> 
 
       数据更新标签: 
 
<sql:update>   
 
                call proc_set_role_salespro(?,?,?,?,?); 
 
                <sql:param value="30"/> 
 
                <sql:param value="39"/> 
 
                <sql:param value="<%=spID%>"/> 
 
                <sql:param value="<%=productID%>"/> 
 
                <sql:param value="1"/>                
 
            </sql:update> 
 
<sql:query var="queryAllChannelCount"> 
 
SELECT COUNT(*) as total FROM tb_channel WHERE game_id=? AND begin_round<func_cur_round(?) AND player_id=? AND channel_flag=0 
 
<sql:param value="${gameID}"/> 
 
<sql:param value="${gameID}"/> 
 
<sql:param value="${playerID}"/> 
 
</sql:query> 
 
<c:forEach items="${queryAllChannelCount.rowsByIndex}" var="channelCN"> 
 
       <c:set value="${channelCN[0]}" var="channelTotal"/> 
 
</c:forEach> 
 
调用存储过程更新数据库: 
 
<c:if test="${param.changsubmit!=null}" > 
 
<c:forEach items="${paramValues.pro_id}" var="getpro_id" varStatus="getparamsta"> 
 
<sql:update> 
 
call proc_set_role_product(?,?,?,?,?,?,?,?); 
 
<sql:param value="${gameID}"/> 
 
<sql:param value="${playerID}"/> 
 
<sql:param value="${getpro_id}"/> 
 
<sql:param value="${getpro_id}"/> 
 
<sql:param value="${paramValues.pro_sort[getparamsta.index]}"/> 
 
<sql:param value="${paramValues.price[getparamsta.index]}"/> 
 
<sql:param value="${paramValues.output[getparamsta.index]}"/> 
 
<sql:param value="0"/> 
 
</sql:update> 
 
</c:forEach> 
 
</c:if> 

 

 

 

你可能感兴趣的:(jstl,c标签,jstl标签库,jsp标准标记库)