JSTL

Jstl的添加

第一种方式:

在创建web项目的时候,自动添加jstl的标签,在新建项目的JSTL Support中选中add jstl libraries to web_inf/inf folder,即可完成jstl标签的添加。


第二种方式:

以一种正常的方式创建web项目,然后在项目中手动的添加jstl标签项,如图:

点击项目名----右击------选中MyEclipse-------Add JSTL Libraries

这样就完成了jstl的添加。


无论哪种方式的添加都必须包含两个jar包:jstl.jar和standard.jar。



Jstl在页面中的导入:

第一种方式:

如果是通过以上两种方式添加了jstl的话,那么在页面中就要添加以下的代码:

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


第二种方式:

手动添加两个主要的jar包,就需要修改一下了:

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


Jstl标签Core标签库介绍


Core标签库,又被称为核心标签库,该标签库的工作是对于jsp页面一般处理的封装,在该标签库中的标签一共有14个,被分为了四类,分别是:

多用途核心标签:<c:out>  <c:set>  <c:remove>  <c:catch>

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

循环控制标签:<c:forEach>  <c:forTokens>

url相关标签:<c:import>  <c:url>  <c:redirect>  <c:param>

以下是各个标签的用途和属性及其简单示例。

1. 用于显示的<c:out>标签

<c:out  value="${username }"  default="传值为空"  escapeXml="true"/>

该标签接收从前一个Action传递过来的username值,如果username的值为空,那么将默认显示default中的值,而当escapeXml设置为true时,将自动更换特殊字符。


2. 用于赋值的<c:set>标签

<c:set>标签用于为变量或是JavaBean中的变量属性赋值的工作,它的属性和描述如下所示:

<c:set value="${username}" property="" scope="page" target="userBean" var="username"/>

Value中存放着即将被使用的值

Target中式被赋值的JavaBean实例的名称,若存在该target属性,则一定要存在property属性(可选)

Property中是JavaBean实例的变量属性名称(可选)

Var是被赋值的变量名(可选)

Scope变量的作用范围,若没有指定,默认为page(可选)


3. 用于删除的<c:remove>标签

<c:remove>标签用于删除存在于scope中的变量,它的属性和描述如下:

<c:remove  var=”sessionName”  scope=”session”>

var 是即将被删除的存在scope范围中的变量的名称

scope指示即将删除的变量存在的作用域范围


4. 用于捕获异常的<c:catch>标签

<c:catch>标签允许在jsp页面中捕捉异常。它包含了一个var属性,是一个描述异常的变量,该变量可选,若没有改变量的定义,那么仅仅是捕捉异常,而不做任何的处理,若定义了var属性,那么可以利用var所定义的异常变量进行判断转发到其他页面或提示报错信息。

<c:catch  var=”errName”>

${param.name == 3}

</c:catch>

当${param.name == 3}表达式有异常时,可以从var属性”err”得到异常的内容,通过判断err内容是否为空来决定错误信息的提示。


5. 用于判断的<c:if>标签

<c:if>标签用于简单的条件语句

<c:if  test=”${username == ‘zhangshan’}”  var=”result”  scope=”session”>

若test中的值就是zhangshan的话,就显示<c:if></c:if>中的内容,判断的结果将存储在scope范围中的var变量中。默认情况下scope的值为page。


6. 用于复杂判断的<c:choose> ,<c:when>,<c:otherwise>标签

这三个标签用于实现复杂条件判断语句,类似”if,else if”的条件语句。

<c:choose>

<c:when test="${username == 'zhangshan'}">

显示张山的信息

</c:when>

<c:otherwise>

显示其他人的信息

</c:otherwise>

</c:choose>

<c:choose></c:choose>标签没有属性,我们可以将其看做是<c:when></c:when>和<c:otherwise></c:otherwise>的父标签,而这一对判断标签就是其中的子标签。


7. 用于循环的<c:forEach>标签

<c:forEach items="${userList }" var="user" step="" varStatus="" begin="" end="">

${user }

</c:forEach>

接收传递过来的一个List集合,然后依次迭代将其中的值放在var变量中

Items中存放进行循环的集合(可选)

Var做循环的对象变量名,若存在items这个属性,则表示循环集合对象中的变量名

Begin表示开始条件

End表示结束条件

Step表示循环的步长,默认情况下为1

varStatus显示循环状态的变量(可选)


8. 用于分隔字符的<c:forTokens>标签

<c:forTokens>标签可以根据某个分隔符分隔指定的字符串,相当于java.util.StringTokenizer类。

<c:forTokens items="123.456.789" delims="." varStatus="" var="inteValue" begin="0" end="2" step="1">

${intValue }

</c:forTokens>

Items表示进行分隔的EL表达式或是常量

Delims表示分隔符

Begin表示开始条件

End表示结束条件

Step表示循环的步长,默认情况下为1

Var表示做循环的对象变量名(可选)

varStatus显示循环状态的变量(可选)

将需要分隔的字符串“123.456.789”,依据分隔符“.”进行分隔,begin为0表示从第一个“.”开始分隔,end为2表示分隔到第三个“.”,并将做循环的变量名指定为intValue。由于步长为“2”,显示的EL表达式${intValue}只能显示为“123 789”。


9. 用于包含页面的<c:import>标签

<c:import>标签允许包含另一个JSP页面到本页面来

<c:import url="/index.jsp" charEncoding="utf-8" context="/test" scope="" var="pageTest" varReader=""/>

url需要导入页面的url

context该属性用于在不同的Context下 导入页面,当出现context属性时,必须以“/”开头,此时url属性页需要以“/”开头(可选)
charEncoding表示导入页的字符集

var可以定义导入文本的变量名(可选)

scope导入文本的变量名作用范围(可选)

varReader接受文本的java.io.Reader类变量名(可选)


10. 用于得到URL地址的<c:url>标签

该标签用于得到一个URL地址

<c:url  value="/index.jsp"  context=""  scope=""  var="urlValue"></c:url>

<a href=”${urlValue}”>超链接</a>

Value页面的URL地址

Context该属性用于得到不同的Context下的URL地址,当出现context属性时,必须以“/”开头,此时也需要url属性以“/”开头(可选)

charEncoding设置URL的字符集(可选)

scope变量名的作用范围(可选)


11. 用于页面重定向的<c:redirect>标签

<c:redirect>用于页面的重定向,该标签的作用相当于response.setRedirect方法名的工作,它包含url和context两个属性,属性含义和<c:url>标签相同

<c:redirect  url=”/index.jsp”>

出现该标签,则将重定向到当前web Context下的index.jsp页面,一般与<c:if>等标签一起使用。


12. 用于包含传递参数的<c:param>标签

<c:param>用来为包含或是重定向的页面传递参数

<c:param  name=”username”  value=”zhangshan”>

Name传递的参数名

Value传递的参数值(可选)

例子: <c:redirect  url=”/index.jsp”>

          <c:param  name=”username”  value=”zhangshan ”/>

      </c:redirect>




Jstl标签XML processing标签库介绍

XML核心标签:<x:parse>  <x:out>  <x:set>

XML流控制标签:<x:if>  <x:choose>  <x:when>  <x:otherwise>  <x:forEach>

XML转换标签:<x:transform>  <x:param>

<?xml  version=”1.0”  encoding=”utf-8”?>

<xml-body>

<username>张三</username>

<password>123456</password>

<hobbies>

<hobby>足球</hobby>

<hobby>篮球</hobby>

<hobby>看书</hobby>

</hobbies>

</xml-body>

1. 用于解析XML文件的<x:parse>标签

<x:parse>标签是该组标签库的核心,从其标签名就可以知道,它是作为解析XML文件而存在的。

<c:import  var=”xmlUser”  url=”http://localhost:8088/eachstudy/xml/userInfo.xml”>

<x:parse  doc=”${xmlUser }”  var=”userValue” scope=””  varDom=””  scopeDom=””  systemId=””  filter=”’/>

Var,scope和varDom,scopeDom不应该同时出现的,而应该被视为两个版本来使用,两者的变量都可以被XML processing标签库的其他标签来使用。

Doc存放XML的内容

Var将解析后的XML保存在该属性所指定的变量中,之后XML processing标签库中的其他标签若取XML中的内容就可以从该变量中得到(可选)

Scope变量的作用范围

varDom指定保存的变量在org.w3c.dom.Document接口类型(可选)

scopeDom org.w3c.dom.Document的接口类型变量作用范围(可选)

systemId定义了一个URL,该URL将使用到XML文件中以接入其他资源文件(可选)

filter该属性必须为org.xml.sax.XMLFilter类的一个实例,可以通过使用EL表达式传入,将对XML文件作过滤得到自身需要的部分(可选)

该示例在借助<c:import>标签的作用下引入了userInfo.xml文件,将其内容保存在xmlUser变量中,<x:parse>根据xmlUser变量的值进行解析userInfo.xml。


2. 用于显示XML内容的<x:out>标签

<x:out>标签从<x:parse>标签解析后保存的变量中取得需要的XML文件内容,并显示在页面上。该标签是通过XPath技术(定位XML元素的一种技术)来实现的。要使用该标签必须将xalan-j的jar包保存在“WEB-INF/lib下”。

<c:import  var=”xmlUser”  url=”http://localhost:8088/eachstudy/xml/userInfo.xml”>

<x:parse  doc=”${xmlUser }”  var=”userValue”’/>

用户名为:<x:out  select=”$userValue/xml-body/username”><br>

密码为:<x:out  select=”$userValue/xml-body/password”>

读取XML文件并解析后的变量userValue将加上“$“作为XPath表达式的开头,select中的表达式将从xml-body根元素下的各个子元素中取得实体内容,最后将结果显示在页面上。


3. 用于保存XML内容的<x:set>标签

<x:set>标签允许将某个源XML中元素的实体内容或是属性,保存到一个变量中去,它的实现也依靠XPath技术。

<c:import  var=”xmlUser”  url=”http://localhost:8088/eachstudy/xml/userInfo.xml”>

<x:parse  doc=”${xmlUser }”  var=”userValue”’/>

<x:set  select=”$userValue/xml-body/username”  var=”tempValue”>

在这里将保存XML的name元素内容到变量“tempValue“中。


4. 用于判断的<x:if>标签

<x:if>标签允许由XPath的Boolean()函数得到的判断结果,来判断是否显示其标签所包含的内容。<x:if >标签的属性与<x:set>标签相同,但是var的结果只能是Boolean类型。


5. 用于复杂判断的<x:choose>  <x:when>  <x:otherwise>标签

这组标签将一起使用,来提供“if elseif“语句的功能。

<x:choose>标签没有属性,可以被认为是父标签<x:when> <x:otherwise>将作为其子标签来使用。

<x:when>标签等价于“if“语句,它包含一个select属性,该属性为XPath判断表达式。

<x:otherwise>标签没有属性,它等价于“else“语句。


6. 用于对XML元素循环的<x:forEach>标签

<x:forEach>为对XML文件中同一名称元素的循环控制标签。

<x:forEach  select=”$userValue/xml-body/hobbies/hobby” var=”hobby”  begin=””  end=””  step=””  varStatus=””>

${hobby }

</x:forEach>

Select是XPath表达式,结果是一个集合,将对该集合进行循环(可选)

Begin开始条件(可选)

End结束条件(可选)

Step循环的步长。默认为1(可选)

Var做循环的对象变量名,表示XPath表达式结果集合中的一个对象(可选)

varStatus显示循环状态的变量(可选)

该示例将使用循环读取XML中多个同存与hobbies元素下的hobby子元素


7. 格式化XML显示数据的<x:transform>标签

<x:transform>标签允许使用XSLT(转换XML格式的语言)为页面的显示数据所格式化的处理。

<c:import  var=”xmlUser”  url=”http://localhost:8088/eachstudy/xml/userInfo.xml”>

<c:set  var=”xsltdoc”>

<?xml  version=”1.0”?>

<xsl:stylesheet  xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” version=”1.0” >

<xsl:apply-template  match=”/”>

<xsl:apply-templates/>

</xsl:template>

<xsl:template  match=”xml-body”>

<html>

<head></head>

<body>

<h2>用户名:<xsl:value-of  select=”username”/></h2>

<h2>密码:<xsl:value-of  select=”password”></h2>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

</c:set>

<x:transform  xslt=”${xsltdoc }”  doc=”${xmlUser}”/>

这个示例将XML文件保存的数据信心利用<c:import>保存在xmlUser中,然后使用一个<c:set>标签保存一个XSLT的源到“xsltdoc“,最后通过<x:transform>格式化XML文件的数据显示在页面上。


8. 用于参数传递的<x:param>标签

<x:param>标签用于在格式化XML时传递所需的参数。它的属性和描述同<c:param>


你可能感兴趣的:(jstl)