`

jsp之jstl标签(c) (转)

阅读更多
一.核心标签库

   它是JSTL中的核心库,为日常任务提供通用支持,如显示和设置变量、重复使用一组项目、测试条件和其他操作(如导入和重定向Web内容)。Core标签按功能可分为4种类型:

1 变量维护:
(1)<c:set>:设置变量值和对象属性。语法如下:

       <c:set value="值" var="变量名" scope="变量的作用域" target="对象名" property=" 对象属性名"></c:set>

每种设置都有两种方式,总结起来,<c:set>的4种形式,如下所示:

a. 使用标记属性设置JSP变量

<c:set value="值" var="变量名" scope="作用域"/>

b. 使用标记体设置JSP变量

<c:set var="变量名" scope="作用域">标记内容</c:set>

c. 使用标记属性设置对象属性

<c:set value="变量名" target="对象名" property="对象属性名"/>

d. 使用标记体设置对象属性

<c:set target="对象名" property="作用域">标记内容</set>

(2)<c:remove>:在指定作用域范围内删除变量。语法如下:

<c:remove var="变量名" scope="作用域"/>

2 流程控制:分为条件标签和迭代标签。

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

(1)<c:if>:与Java语言中的if语句的使用方法一样,但不能实现else的功能。

     <c:if>标签有两种语法形式,是以有无标记体来区分的。

     无标签体:

         <c:if test="测试条件" var="变量名" [scope="作用域"]/>

     有标签体:

         <c:if test="测试条件" var="变量名" [scope="作用域"]>

               标签体

         </c:if>

带标记体的<c:if>

<c:if test="${user.visitCount!=0}">欢迎光临</c:if>

(2)<c:choose> <c:when> <c:otherwise>

<c:when> <c:otherwise>无法单独使用,只能作为<c:choose>的子标签来使用。这三个标签组合起来实现Java中的switch语句的功能。语法如下:

    <c:choose>

    <c:when test="${user.class==’guest’}">

        标签体1

    </c:when>

    <c:when test="${user.class==’vip’}">

        标签体2

    </c:when>   

    <c:otherwise>

        标签体3

    </c:otherwise>  

    </c:choose>

迭代标签:<c:forEach> <c:forTokens>

(1)<c:forEach>:用于遍历一个对象集合,可以是数组、Map、List和Set。

    <c:forEach var="变量名" items="集合" varStatus="遍历状态名"
               begin="begin" end="end" step="step" >
            标签体          
    </c:forEach>
不论是对整数还是对集合进行迭代, <c:forEach>的varStatus属性所起的作用相同。和var属性一样,varStatus用于创建限定了作用域的变量(改变量只在当前标签体内起作用)。不过,由varStatus属性命名的变量并不存储当前索引值或当前元素,而是赋予javax.servlet.jsp.jstl.core.LoopTagStatus类的实例。该类包含了一系列的特性,它们描述了迭代的当前状态,如下这些属性的含义如下所示: 
current:当前这次迭代的(集合中的)项。 
index:当前这次迭代从0开始的迭代索引。 
count:当前这次迭代从1开始的迭代计数。 
first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型。 
last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型。 
begin:begin属性的值。 
end:end属性的值 
step:step属性的值 


(2)<c:forTokens>:用于遍历字符串,而且每次遍历结果返回字符串中的一个单词。

    <c:forTokens items="字符串" delims="分界符" var="变量名"

          varStatus="遍历状态名" begin="begin" end="end" step="sep">

            标签体     

    </c:forTokens>

3 URL管理

(1)<c:url>:用于对URL地址进行编码。

    有标签体:

   <c:url value="URL" context="路径" var="变量名" scope="作用域">

      标签体

</c:url>

如下代码:

<c:url value="http://localhost:8080/el/index.jsp" var="NewURL">

      <c:param name="name" value="zero"/>

      <c:param name="age" value="28"/>

</c:url>

<a href="${NewURL}">点我呀</a>

生成的URL:http://localhost:8080/el/index.jsp?name=zero&age=28

   无标签体:主要用于编辑上下文URL。

   <c:url value="URL" context="路径" var="变量名" scope="作用域"/>

    如下代码:

   <c:url value="/logon.jsp">登录</c:url>         

若当前路径为el,则输出为:/el/logon.jsp   

(2)<c:import>:向当前JSP页面中引入URL资源(可以是远程序站点上的资源)。Include指令和include动作不能向JSP页引入Web程序以外的资源,引入的资源必须位于当前Web程序中。

以String对象引入的语法:

<c:import url="地址" context="上下文路径" var="变量名"

    scope="作用域" charEncoding="字符集">

        标签体使用<c:param>

</c:import>

如下代码:将外部资源引入到当前JSP页面中.

<c:import url="http://www.hao123.com" var="myurl" charEncoding="gb2312">

</c:import>

<a href="${myurl }">地址</a>

以Reader对象导入的语法:

<c:import url="地址" context="上下文路径" varReader="变量名"

    scope="作用域" charEncoding="字符集">

        标签体使用其它动作元素

</c:import>

(3)<c:redirect>:用于HTTP重定向。

   无标签体:

<c:redirect url="地址" context="上下文路径"/>

有标签体:

<c:redirect url="地址" context="上下文路径">

       <c:param/>标签

</c:redirect>

(4)<c:param>:只能嵌入到<c:url>、、<c:import>、<c:redirect>标签中作为子元素来使用。此标签主要用于设置URL中将要传入的参数。

无标签体:

<c:param name="名称" value="值"/ >

有标签体:

<c:param name="名称" value="值" >

    标签体

</c:param>

4 其它标签:<c:out>、<c:catch>。

(1)<c:out>:在JSP页面中显示变量内容。

无标签体:

<c:out value="值" escapeXml="{true|false}" default="默认值"/>

有标签体:

<c:out value="值" escapeXml="{true|false}" default="默认值">

    标签体

</c:out>

其中:

default: 用于指定当value值为null时,应该输出的值。

escapeXml: 用于设置是否将"<"、">"、"&"、"’"、"""、这些字符进行转义。

escapeXml默认为true,表示发生转换。

"<"转换成"&lt"

">"转换成"&gt"

"&"转换成"&amp"

"’"转换成"&#039"

"""转换成"&#034"

(2)<c:catch>:用于处理JSP页面错误。

        如果JSP页面出错,可以通过对page指令属性的设置将其转到错误处理页面上。<c:catch>标签是对这种错误处理的补充。它的处理方式是将可能发生异常的JSP代码片段嵌入到标记体内,然后使用var属性心不烦接收标记体抛出的异常。

<c:catch var="变量名">

      嵌套动作

</c:catch>

使用方法:

<c:catch var="myexception">

      嵌套动作

</c:catch>

<c:if test="${myexception!=null}">

    内容

</c:if>



最后关于版本问题的讨论

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee version="2.4">

2.4的版本需要jstl.jar和standard.jar,还要注意版本问题,不同版本不能兼容。

应用部署运行的时候出现JSP异常, 发生在使用JSTL库的时候: According to TLD or attribute directive in tag file, attribute value does not accept any expressions, 可能是因为使用了JSP2.0版本, 同时又没有使用JSTL core库的备用版本(RT库), 以下有两种处理方法:

1. 如果不想使用web-app_2_4.xsd 和jstl1.1 那么可以按照下面两种方式修改

1). 修改web.xml.

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot; version="2.4">

改为2.3版本的

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

2). 使用JSTL core RT库

JSTL core库的有两种taglib伪指令, 其中RT库即是依赖于JSP传统的请求时属性值, 而不是依赖于EL来实现(称为EL库.JSP2.0将支持EL)

JSP中使用 <%@ taglib uri=http://java.sun.com/jstl/core prefix="c"%>在2.3版本都可以,在2.4就不行了, 这是版本不兼容引起的,稍后将介绍servlet的版本。

只要将

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

改为

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

2:如果要使用jstl1.1(推荐) 则按照一下修改,很简单的。

jstl存在1.0和1.1的差异问题,用EL建议需要在1.1的版本下,

使用jstl1.1 只需要将

1.0的为

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

换成:

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

参考网址:
http://www.gbsou.com/2009/10/12/1028.html
分享到:
评论

相关推荐

    jsp中使用jstl标签的驱动

    JSTL标签库通常包括Core、XML、Format、I18N和Function等多个部分,它们分别对应不同的功能。Core库是最常用的部分,包含了处理页面流程控制、数据输出等基本操作的标签。 要使用JSTL,首先我们需要在项目的类路径...

    jakarta.servlet.jsp.jstl-api-2.0.0.jar

    将"jakarta.servlet.jsp.jstl-api-2.0.0.jar"添加到Tomcat的类路径中,可以确保JSP页面能够识别并使用JSTL标签。 JSTL主要包含以下几个核心标签库: 1. **Core Library**(c:):提供了基本的控制流和数据处理功能...

    JSP的JSTL标签和EL表达式大全

    **JSP的JSTL标签和EL表达式详解** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码来生成动态内容。然而,传统的JSP脚本语法可能导致代码混乱且不易维护。为了解决这个问题...

    JSTL标签库需要导入的Jar包

    通过将业务逻辑从Java脚本let中移除并替换为JSTL标签,可以使JSP页面更加专注于视图的呈现,遵循MVC设计模式,有助于提高代码的结构和质量。同时,JSTL标签的语义比原始的JSP动作更清晰,更易于理解和调试。因此,...

    JSTL标签库-tomcat10-简化JSP中java代码

    **正文** JSTL(JavaServer Pages Standard Tag Library)是Java Web开发中一个重要的标签库,主要用于简化...通过学习和实践这些内容,开发者可以更加熟练地在JSP页面中运用JSTL标签,提升Web应用的开发质量和效率。

    JSTL 标签库 jsp C 标签库

    - **提高性能**:JSTL标签在服务器端被翻译成Java代码,执行效率相对较高。 **4. 安装与配置JSTL:** 下载`jakarta-taglibs_2019`或其他版本的JSTL库后,将其解压,将`jstl.jar`和`standard.jar`添加到项目的类路径...

    JSP标准标签库(jstl)

    JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据...

    jsp标准jstl标签

    下面我们将深入探讨JSTL标签库及其使用方法。 1. **JSTL Core库** JSTL Core库是JSTL中最基础的部分,包含了处理控制流程、条件判断、迭代、URL处理等常用功能的标签。例如: - `&lt;c:if&gt;`:进行条件判断。 - `&lt;c:...

    JSTL标签JSTL标签

    JSTL常与EL一起使用,EL负责获取和设置页面作用域内的对象,而JSTL标签负责逻辑处理。EL的简洁语法使得数据访问更加直观,如`${variable}`表示获取页面作用域内的`variable`对象。 **6. JSTL的优点:** - 提高了...

    JSTL标签依赖包下载

    在实际项目中,合理使用JSTL标签可以提高代码的可读性,减少代码量,同时保持良好的结构。但需要注意,过度依赖JSTL可能会使JSP页面过于复杂,违反了MVC架构的原则,因此应当适度使用,并结合其他技术如Spring MVC、...

    JSTL(jsp标准标签库)

    ### JSTL(JSP标准标签库):增强JSP页面功能的关键技术 JSTL,全称为JSP Standard ...通过上述知识点的解析,我们可以看到JSTL标签库极大地提升了JSP页面的开发效率和可维护性,是Java Web开发中不可或缺的一部分。

    Java web常用包javax.servlet.jsp.jstl-1.2.1.zip

    EL表达式可以在JSTL标签中直接使用,简化了数据绑定。 7. **配置与依赖**:在使用JSTL时,需要在web.xml文件中配置JSTL相关的jar文件,并确保它们在类路径中可用。`javax.servlet.jsp.jstl-1.2.1.jar`及其依赖如`...

    JSTL标签库依赖,内含Tomcat8、Tomcat10所需JSTL依赖

    3. 使用JSTL标签:现在可以在JSP页面中使用JSTL标签,如`&lt;c:forEach&gt;`进行迭代,`&lt;c:if&gt;`进行条件判断,`&lt;fmt:formatDate&gt;`格式化日期等。 总之,JSTL是提升JSP页面编写效率的重要工具,而依赖注入则是现代Java应用...

    javax.servlet.jsp.jstl-1.2.zip

    **JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的Java标签库,用于增强JSP页面的功能,简化Web开发。它提供了多种标签来处理常见的任务,如控制流程、XML处理、数据库操作等,使得代码更加简洁和...

    JAVAEE实验报告EL表达式和jstl标签库的使用.pdf

    JSTL 标签库(JavaServer Pages Standard Tag Library)是一种在 JSP 页面中使用的标签库,用于简化 JSP 页面的开发。JSTL 标签库提供了一些常用的标签,例如 foreach、if、choose 等,可以用于循环输出数据、条件...

    JSP JSTL 标签库详解 (一个不漏)

    JSP JSTL 标签库详解 JSTL(JavaServer Pages Standard Tag Library)是 Java EE 应用程序中的一种标签库,用于简化 JSP 页面的开发。JSTL 标签库提供了一组丰富的标签,用于处理各种常见的 Web 开发任务。本文将对...

    jstl标签库的配置

    这样,你就可以使用如`&lt;c:forEach&gt;`、`&lt;fmt:formatDate&gt;`等JSTL标签了。 **JSTL常见标签及其用法**: - `c:set`:设置变量,如`&lt;c:set var="name" value="张三"/&gt;`。 - `c:out`:安全地输出变量,防止XSS攻击,如`...

    struts1.2、jstl、jsp三种标签教程

    JSTL(JavaServer Pages Standard Tag Library)是Java EE平台的一部分,提供了一系列用于处理常见JSP任务的标签库,如迭代、条件判断、XML处理等,减少了对脚本语言的依赖,使得JSP页面更加清晰、可维护。JSTL的...

    jstl标签使用文档,jstl标签使用帮助文档

    本文档将详细介绍JSTL标签的使用方法,帮助开发者更好地理解和应用。 JSTL主要分为五个核心部分: 1. **Core(核心标签库)**:提供基本的控制结构,如条件语句、循环、跳转等。 - `&lt;c:if&gt;`:用于执行条件判断。 ...

    JSTL标签配置流程

    【JSTL标签配置流程详解】 JSTL(JavaServer Pages Standard Tag Library)是SUN公司推出的一种用于JSP开发的组件,旨在替代传统的JSP scriptlet代码,提高页面的可读性和维护性。JSTL提供了一系列标签,使得开发者...

Global site tag (gtag.js) - Google Analytics