JSTL标签

来源:互联网 发布:c语言随机函数rand 编辑:程序博客网 时间:2024/05/24 04:49

ELJSTL的作用:使用开发视图层更容易,JSP页面中不出现Java代码。

JSP标准动作的局限性:

只能操作JavaBean属性

不能自动类型转换

不能进行逻辑判断

而使用ELJSTL可以弥补这点

关于EL表达式看上一篇博文。

二、JSTL

JavaServer Page standard Tag LibraryJSP标准标签函数库。

JSTL 1.1必须在支持Servlet 2.4JSP 2.0以上版本的Container中使用,如Tomcat 5以上版本。使用必须导入URI

JSTL 1.1包含两个jar包:jstl.jarstandard.jar

JSTL提供的标签库分五大类:

JSTL

前缀

URI

核心标签库(Core tag library)

c

http://java.sun.com/jsp/jstl/core

I18N格式标签库(I18N-capable formatting)

fmt

http://java.sun.com.jsp/jstl/fmt

SQL标签库(SQL tag library)

sql

http://java.sun.com/jsp/jstl/sql

XML标签库(XML tag library)

xml

http://java.sun.com.jsp/jstl/xml

函数标签库(Function tag library)

fn

http://java.sun.com/jsp/jstl/funcions

注意:JSTL 1.1URI中有/jsp,而JSTL1.0中没有,不要写错路径。

导入核心标签库:

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

1、核心标签库

核心标签库主要包括:基本输入输出,流程控制,迭代,URL操作。

表达式操作(输入输出):outsetremovecatch

流程控制:ifchose(whenotherwise)

迭代操作:forEachforTokens

URL操作:importurlredirect

1)、表达式操作

out:显示数据的内容

<c:out value="" default="" escapeXml="true|false" />

value:要显示的值

default:默认值

escapeXml:是否转换特殊字符

如果没有指定default,而value值为null时,显示空字符串。

如: <c:out value="${sessionScope.loginUser.username }" default="您还没有登录/>

set:将变量存储在JSP范围或JavaBean属性中。

<c:set var="" value="" scope="" target="" property=""/>

var:变量名称

value:被存储的值

scope:范围

target:为一个JavaBeanMap对象

property:指定target对象的属性

remove:移除变量

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

var:移除的变量名称

scope:范围

如果没有指定范围,则移除所有范围内相同名称的变量。

catch:处理异常

<c:catch var="">

//发生异常的代码

</c:catch>

将会发生异常的代码包围起来,当发生异常时,将错误信息存储在var指定的变量中。只有catch标签内的代码中止执行,其余部分将继续完成。

2、流程控制

if

<c:if test="" var="" scope="">

    //代码

    </c:if>

test:如果表达式执行结果为true,则执行本体内的代码,否则不执行。如果要结果为假时执行,则加!。

如:

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

    结果为真。

  </c:if>

choose:相当于switch语句块

<c:choose>

    <c:when test=""></c:when>

    <c:when test=""></c:when>

    <c:when test=""></c:when>

<c:otherwise></c:otherwise>    

</c:choose>

whenotherwise必须在choose之间,when必须在otherwise之前

可以有1个或多个when语句块,可以有0个或多个otherwise

when块必须有test属性,当有几个when为真时,只有第一个执行。

如:

<c:choose>

    <c:when test="true">

    when1

    </c:when>

    <c:when test="true">

    when2

    </c:when>

    <c:when test="false">

    when3

    </c:when>

<c:otherwise>

otherwise

</c:otherwise>    

</c:choose>

foreach:迭代

   <c:forEach var="" items="" begin="" end="" step="" varStatus="">

   

   </c:forEach>

var:存放当前元素的变量

items:被迭代的集合对象,数组,listmap等等

begin:开始位置

end:结束位置

step:步长

varStatus:存放当前元素的相关信息。

示例:

<center>

    <c:forEach var="i" begin="1" end="10">

    <c:forEach begin="1" end="${2*i-1 }">*</c:forEach>

    <br />

    </c:forEach>

    </center>

<table class="indexTable">

<c:forEach var="article" items="${sessionScope.type1Map}" end="3">

<tr>

<td width="55%" align="center">

<href="#">${article.value.title}</a>

</td>

<td width="45%" align="center">

[${fn:substring(article.value.writeDate,0,16) }]

</td>

</tr>

</c:forEach>

</table>

注意:

如果有step,则必须大于0,否则出异常。

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: 'step' <= 0

如果有begin,则必须大于等于0

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: 'begin' < 0

begin大于items的大小时,迭代不执行。

items为空时,迭代不执行。

itemsMap时,使用var.value.xxx的方法取出value中的值。

2I18N格式标签库

用于格式化输出,可实现国际化格式输出等。

主要包括:国际化,消息,数字日期格式化。

数字格式化:

如:

<fmt:formatNumber value="12" pattern="0.00"/>

输出:12.00

3SQL标签库(不推荐使用)

主要包含:setDataSourcequeryupdateparam

4、使用函数标签库

引入标签库:

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

使用标签截取字符串:

${fn:substring("xxxxxxx",0,5) }

5、使用fmt格式化日期

<jsp:useBean id="now" class="java.util.Date"/>

<fmt:formatDate var="d" type="date" value="${now}"/> 

now : ${now}

d : ${d}

 

原创粉丝点击