JSTL标签整理

                         JSTL标签

 

包括以下几个标签库:

     核心标签库           http://java.sun.com/jsp/jstl/core       c

     Xml标签库           http://java.sun.com/jsp/jstl/xml       x

     国际化/格式化标签库   http://java.sun.com/jsp/jstl/fmt       fmt

     数据库标签库         http://java.sun.com/jsp/jstl/sql        sql

     EL自定义函数        http://java.sun.com/jsp/jstl/functions   fn

 

: 语法说明

[…]:表示括号中的内容是可选的

{option1| option2| option3| option4|….}:花括号中的”|”字符分隔的各个选项不能同时出现,只能选一个.

属性的值字体加粗,表示这个值是对应属性的默认值

属性的值斜体,表示该属性可以是表达式

标签的内容用斜体,表示标签体的内容可以是jsp代码.

 

核心标签库:

 

<c:out>语法: (1) <c:out value=”value” [escapeXml=”${true|false}”]

 [default=” defaultValue”]  />

          

           (2) <c:out value=”value” [escapeXml=”${true|false}”]>

                    default value

              </c:out>

 

                         <c:out>标签属性说明

 

属性名

   是否支持EL

    属性类型

    属性描述

   value

    true

     Object

指定输出的内容

   escapeXml

    true

     boolean

是否将 >,<,’,”,&,等特殊字符进行HTML编码转换后再进行输出,默认是true.

   default

    true

     Object

如果value属性的值为null,所输出的默认值.

如果没有指定默认值,默认为null字符串.

 

 

 

 

 

                             特殊字符转换表

 

         字符

          字符实体编码

          <

            &lt;

          >

            &gt;

          &

            &amp;

         

            &#039;

         

            &#034t;

 

escapeXml=true,对特殊字符输出为字符实体编码中对应的值.

escapeXml=false,则不对特殊字转换,直接输出<,>,&,’,”

 

例子1:

Out1.jsp

 

<%

    session.serAttribute(“test_session”,”zhangfan”);

%>

<c:out value=”test” default=” 123456” /><br/>

<c:out value=”${test_request}” default=”这个属性不存在”/><br/>

<c:out value=”${test_session}” /><br/>

运行结果:

   test

   这个属性不存在

   zhangfan

 

例子2:

     Out2.jsp

   

     <c:out value=”${null}”>

          <meta http-equiv=”refresh” content=”0;url=http://www.it315.org”/>

     </c:out>

运行结果:

     <meta http-equiv=”refresh” content=”0;url=http://www.it315.org”/>

 

例子3:

把例2<c:out value=”${null}”>变成<c:out value=”${null}” escapeXml=”false”>其他不变.

运行结果:

显示http://www.it315.org这个网页.

 

 

 

  <c:if>标签语法:

          (1)<c:if test=”testCondition” var=”varname

[scope=”{page|request|session|application}”] />

         

          (2) <c:if test=”testCondition” var=”varname

[scope=”{page|request|session|application}”] >

body content

             </c:if>

 

                  <c:if>标签属性

属性名

  是否支持EL

   属性类型

    属性描述

     test

    true

    boolean

是否处理标签体中的内容的条件表达式

     var

    false

    String

用于指定将test属性的执行结果保存在某个web域中的某个属性的名称

     scope

    false

    String

指定将test属性的执行结果保存在哪个web域中

 

先写一个UserBean,此类在org.it315包下.

public class UserBean{

    private String username;

    private String password;

    private String address;

    private int visitCount;

   

    get()/set()方法;

}

 

例子1:

if1.jsp

<jsp:useBean id=”user” class=”org.it315.UserBean”>

<c:set value=”${param.count}” target=”${user}” property=” visitCount” />

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

     这是您第一次访问!

</c:if>

地址栏输入http://localhost:8080/JSTL/if1.jsp?count=1

运行结果:

  这是您第一次访问!

 

 

 

 

<c:set>标签语法:

     <c:set>用于设置各种web域中的属性,或者设置web域中的java.until.Map类型的属性对象或javabean类型的属性对象的属性.

(1)    使用value属性设置指定域中的某个属性的值:

<c:set value=”value” var=”varName”

[scope=”{page|request|session|application}”] />

 

(2)    在标签体中设置指定域中的某个属性的值:

<c:set var=” varName” [scope=”{page|request|session|application}”]>

     body content

</c:set>

 

(3)    使用value属性设置web域中的一个属性对象的某个属性:

<c:set value=”value” target=”target” property=”propertyName” />

 

      (4)在标签体中设置web域中的一个属性对象的某个属性:

<c:set target=”target” property=”propertyName” />

     body content

</c:set>

 

              <c:set>标签的属性

属性名

是否支持EL

属性类型

属性描述

      value

     true

    object

 用于指定属性值

      var

     false

    string

用于指定要设置的web域属性的名称

      scope

     false

    string

 用于指定属性所在的web

      target

     true

    object

 用于指定要设置属性的对象,这个对象必须是javabean对象或java.until.Map对象

      property

     true

    string

 用于指定当前要为对象设置的属性名称

当语法(1)value属性值为null,或者使用语法(2)格式时,标签内容为空,<c:set>标签将从scope属性指定的域范围中删除var属性指定的属性.

语法(3)和语法(4)格式中:如果target属性的值是java.until.Map对象,property属性表示该Map对象的关键字,如果Map对象没有指定关键字,就给Map对象增加指定的关键字.如果target属性的值是javabean对象, property属性表示该javabean对象的属性.如果value的类型与javabean属性的类型不匹配时,会根据EL的转换规则自动进行转换.

当使用语法(3)和语法(4),如果target属性的值是null(target属性指定的对象不存在),或者target属性的值是一个javabean对象,但该javabean中不存在property属性指定的属性.<c:set> 标签将抛出异常.

如果使用语法(3),value属性的值为null,或者使用语法(4)时标签体的内容为空,如果target属性的值是一个java.until.Map对象,就从Map对象中删除property属性指定的关键字对应的项;如果target属性的值是一个javabean对象,就将javabean的相应属性的值设置为null.

 

例子: set1.jsp

     <c:set var=”userName” scope=”session”>

         zxx

     </c:set>

     结果1:

     <c:out value=”${userName}” /><br/>

     结果2:

     <c:set var=”bookName” scope=”session” />

     <c:out value=”${bookName}” />

    

     运行结果:

        结果1:zxx

        结果2:

  

     set2.jsp

<%

     HashMap preferences = new ArrayList();

     Session.setAttribue(“preferences”, preferences);

%>

<jsp:userBean id=”user” class=”org.it315.UserBean” />

操作UserBeanuserName属性结果:

<c:set value=”zxx” target=”${user}” property=”userName” />

<c:out value=”${user.userName}” /><br/>

操作userbeanpassword属性的结果:

<c:set target=”${user}” property=”password” />

<c:out value=”${user.password}” /><br/>

操作Map对象的color关键字的值:

<c:set target=”${preferences}” property=”color” value=”${param.color}” />

<c:out value=”${ preferences.color}” /><br/>

 

在浏览器中输入http://localhost:8080/JSTL/set2.jsp?color=green

 

运行结果:

  操作UserBeanuserName属性结果:zxx

  操作userbeanpassword属性的结果:

  操作Map对象的color关键字的值: green

 

 

 

 

<c:choose>标签:

用于指定多个条件选择的组合边界,它必须与<c:when><c:otherwise>标签一起使用,使用 <c:choose>,<c:when><c:otherwise>三个标签,可以构造类似if-else if-else的条件判断结构.

<c:choose>标签没有属性,在它的标签体内只能嵌套一个或多个<c:when>标签和0个或一个<c:otherwise>标签,并且同一个<c:choose>标签中的所有<c:when>子标签必须出现在<c:otherwise>子标签之前.

如果<c:choose>标签内嵌套一个<c:when>标签和<c:otherwise>标签,就相当于”if-else”

如果<c:choose>标签内嵌套多个<c:when>标签和一个<c:otherwise>标签,就相当于”if-else if-else”

<c:when>标签只有一个test属性,boolean类型.test属性支持动态值,其值可以是一个条件表达式/如果属性的值为true,就执行这个<c:when>标签体的内容. <c:when>标签体的内容可以是任意的jsp代码. <c:otherwise>标签没有属性,它必须作为<c:choose>标签的最后分支出现.

 

jsp页面使用<c:choose>标签时,嵌套在<c:choose>内的test条件成立的第一个<c:when>标签的标签体内容将执行和输出,当且仅当所有的<c:when>标签的test条件都不成立时,才执行和输出<c:otherwise>标签的标签体的内容.如果所有的<c:when>标签的test条件都不成立,并且<c:choose>标签内没嵌套<c:otherwise>标签,则不执行任何操作.

 

例子:

choose1.jsp:

 

<c:set value=”${param.count}” var=”count” />

<c:choose>

   <c:when test=”${count==0}”>

       对不起!

   </c:when>

   <c:otherwise>

       符合要求的记录为${count}

   </c:otherwise>

</c:choose>

 

在浏览器地址栏中输入:

http://localhost:8080/JSTL/choose1.jsp?count=0

输出结果:

   对不起!

 

(如果将count=0改为count=10,则输出结果为:符合要求记录为10)

 

 

 

例子2:choose2.jsp

     这是一个综合使用<c:if>标签和<c:choose>标签的例子.

     首先使用<c:if>标签判断表单提交方式是否是post.如果是,就再使用<c:choose>等标签根据表单提交的内容进行不同的处理.

 

     <c:if test=”${pageContext.request.method==’post’}”>

         <c:choose>

            <c:when test=”${param.favor==’computer’}”>

                您的爱好是计算机

            </c:when>

            <c:otherwise>

                您的爱好是其他

            </c:otherwise>

     </c:if>

     <form method=”post”>

     您的爱好是什么?

     <input type=”text” name=”favor” />

     <input type=”submit” value=”submit” />

     </form>

     运行结果:您的爱好是计算机

     (form里的post改成get)则结果为:您的爱好是其他.

 

 

<c:forEach>标签:

       对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签中的内容.

语法:

(1)    迭代固定的次数:

<c:forEach  [var=”varName”]

[varStatus=”varStatusName”]

begin=”begin” end=”end” [step=”step”] >

 

body context

 

        </c:forEach>

 

(2)    对集合对象中迭代:

<c:forEach  [var=”varName”]

           items=”collection

           [varStatus=”varStatusName”]

           [begin=”begin”]  [end=”end”]  [step=”step”] >

body context

</c:forEach>

 

             <c:forEach>标签的属性

     属性名

    是否支持EL

    属性类型

    属性描述

      var

     false

     String

指定将当前迭代到的元素保存到page这个web域中的属性名称

      items

     true

  任何支持的类型

将要迭代的集合对象

      varStatus

     false

     String

指定将代表迭代状态信息的对象保存到page这个web域中的属性名称

      begin

     true

     int

如果指定items属性,就从集合中的第begin个元素开始进行迭代,begin的索引值从0开始编号;如果没有指定items属性,就从begin指定的值开始迭代直到end值时结束迭代.

      end

     true

     int

参看begin属性的描述

      step

     true

     int

指定迭代的步长,即迭代因子的迭代增数量

 

<c:forEach>标签注意:

(1)    如果指定begin属性,其值必须大于或等于零.

(2)    如果指定step属性,其值必须大于或等于1.

(3)    如果items属性值为null,则要处理的集合对象为空,这是不执行迭代操作。

(4)    如果指定的begin属性的值大于或等于集合对象的长度,不执行迭代操作。

(5)    如果指定的end属性的值小于begin属性的值,不执行迭代操作。

 

 

<c:forEach>标签的items属性的值支持下面数据类型:

(1)    任意类型的数组

(2)    java.until.Iterator

(3)    java.until.Enumeration

(4)    java.until.Collection

(5)    java.until.Map

(6)    String

(7)    java.sql.ResultSet(包括javax.sql.RowSet)

 

 

 

一.迭代Collection类型的集合对象

例子:collection1.jsp

<%

   Collection users = new ArrayList();

   for(int i=0;i<5;i++){

      UserBean user = new UserBean();

      user.setUserName(“user”+i);

      user.setPassword(“guess”+i);

      users.add(user);

   }

   session.setArribute(“users”,users);

%>

<table>

<tr><td>用户名</td><td>密码</td></tr>

<c:forEach var=”user” items=”${users}”>

    <tr>

       <td>${user.userName}</td>

<td>${user.password}</td>

        </tr>

     </c:forEach>

</table>

结果:

       用户名        密码

       user0          guess0

user1          guess1

user2          guess2

user3          guess3

user4          guess4

 

二.迭代Map对象:

    使用<c:forEach>迭代出的每个元素的类型为Map.Entry, Map.Entry代表Map集合中的一个条目项,其中的getKey()方法获得条目项的关键字。getValue()方法可获得条目项的值。

    EL中的requestScope隐含对象代表request作用域中的所有属性的Map对象,所以可以使用<c:forEach>迭代出EL中的requestScope隐含对象中的所有元素。

    例子:Map1.jsp

    <%

        request.setArribute(“attr 1” ,”value 1” );

request.setArribute(“attr 2” ,” value 2” );

%>

<table>

   <tr>

<td>map的关键字</td>

<td>map的对应关键字的值</td>

           </tr>

           <c:forEach var=”entry” items=”${requestScope}”>

<tr>

<td>${entry.key}</td>

<td>${entry.value}</td>

               </tr>

            </c:forEach>

         </table>

结果:map的关键字             map对应关键字的值

        attr1                         value1

        attr2                         value2

 

三.迭代指定的次数:

<c:forEach>标签可以按指定的次数重复迭代执行标签体中的内容,可以指定迭代的步长,也可不指定。

例子:count.jsp

      1116迭代,指定迭代步长为2

      <c:forEach var=”i” begin=” 11” end=” 16” step=” 2” >

          ${i}

      </c:forEach><br/>

      05迭代,没指定步长:

      <c:forEach var=”i” begin=” 0” end=” 5” >

          ${i}

      </c:forEach><br/>

结果:

    1116111315

    05012345

 

四.指定迭代集合对象的范围和步长:

<c:forEach>标签迭代集合类对象时,也可以指定迭代的范围和步长

例子:clo.jsp

<%

   Collection users = new ArrayList();

   for(int i=0;i<6;i++){

      UserBean user = new UserBean();

      user.setUserName(“user”+i);

      user.setPassword(“guess”+i);

      users.add(user);

   }

   session.setArribute(“users”,users);

%>

<table>

<tr><td>用户名</td><td>密码</td></tr>

<c:forEach var=”user” items=”${users}” end=” 5” step=” 2” >

    <tr>

       <td>${user.userName}</td>

<td>${user.password}</td>

        </tr>

     </c:forEach>

</table>

结果:

       用户名        密码

       user0          guess0

user2          guess2

user4          guess4

 

五.获取迭代的状态信息:

<c:forEach>可以当代表当前迭代状态信息的对象保存到page域中

varStatus属性指定了这个对象保存在page域中的属性名称

代表当前迭代状态信息的对象的类型为javax.servlet.jsp.jstl.core.LoopTagStatus.

JSTL中查看这个类的详细信息,如下方法:

(1)       public java.lang.Integer getBegin()

返回为标签设置的begin属性的值,如果没有设置begin属性则返回null

(2)       public java.lang.Object.getCurrent()

返回当前迭代到的元素对象

(3)       public java.lang.Integer getEnd()

返回为标签设置的end属性的值,如果没有设置end属性则返回null

(4)       public int getIndex()

返回当前迭代的索引号

(5)       public java.lang.Integer getStep()

返回为标签设置的step属性的值,如果没设置则返回null

(6)       public boolean isFirst()

返回当前是否是第一次迭代操作

(7)       public boolean isLast()

返回当前是否是最后一次迭代操作

 

例子:clo2.jsp

<%

   Collection users = new ArrayList();

   for(int i=0;i<6;i++){

      UserBean user = new UserBean();

      user.setUserName(“user”+i);

      user.setPassword(“guess”+i);

      users.add(user);

   }

   session.setArribute(“users”,users);

%>

<table>

<tr>

<td>用户名</td><td>密码</td>

<td>index</td><td>count</td>

<td>first?</td><td>last?</td>

</tr>

<c:forEach var=”user” items=”${users}” varStatus=”sta” begin=” 1” step=” 2” >

    <tr>

       <td>${user.userName}</td>

<td>${user.password}</td>

<td>${sta.index}</td>

<td>${sta.count}</td>

<td>${sta.first}</td>

<td>${sta.last}</td>

        </tr>

     </c:forEach>

</table>

迭代固定的次数

<table>

<tr>

<td>数值</td><td>index</td><td>count</td>

<td>first?</td><td>last?</td>

</tr>

<c:forEach var=”i” varStatus=”sta 1” begin=” 101” end=” 103” >

   <tr>

     <td>${i}</td>

     <td>${sta1.index}</td>

<td>${sta1.count}</td>

<td>${sta1.first}</td>

<td>${sta1.last}</td>

       </tr>

     <c:forEach>

</table>

 

结果:

用户名     密码     index     first    last   count

 user1     guest1      1       true      false      1

 user3     guest3      3       false     false      2

 user5     guest5      5       false     true       3

 

迭代固定的次数

数值      index    count    first    last

101        101      1      true      false

102        102      2      false     false

103        103      3      false     true

 

六.与条件标签结合使用:

例子:com.jsp

<table>

<tr>

   <td>number</td>

   <td>count</td>

   <td>even|odd</td>

</tr>

<c:forEach var=”i” begin=” 11” end=” 13” varStatus=”status”>

<tr>

   <td>${i}</td>

   <td>${status.count}</td>

   <td>

       <c:choose>

          <c:when test=”${status.count%2==0}”>

             偶数行

          </c:when>

          <c:otherwise>

             奇数行

          </c:otherwise>

       </c:choose>

</td>

</tr>

</c:forEach>

</table>

结果:

number       count         even|odd

  11           1            

  12           2            

  13           3            

 

<c:forTokens>标签:

用于实现类似java.until.StringTokenizer类的迭代功能,但它是以单个字符作为分隔符,同时可以指定多个字符作为多个并行的分隔符。

语法:

<c:forTokens  items=”stringOfTokens  delims=”delimites

[var=”varName”]

[varStatus=”varStatusName”]

[begin=”begin”]  [end=”end”]  [step=”step”]>

body content

</c:forTokens>

 

 

 

                <c:forTokens>标签的属性

属性名

    是否支持EL

   属性类型

    属性描述

      var

      false

     String

指定将当前迭代出的子字符串保存到page这个web域中的属性名字

      items

      true

     String

将要迭代的字符串

      delims

      true

     String

指定一个或多个分隔符

      varStatus

      false

     String

指定将代表当前迭代状态信息的对象保存到page这个web域中的属性名称,代表当前迭代的状态信息的对象的类型为java.servlet.jsp.jstl.core.LoopTagStatus,JSTL规范中可以查看这个类的详细信息

      begin

      true

     int

指定从第begin个子字符串开始迭代,begin的索引值从0开始编号

      end

      true

     int

指定迭代到第begin个子字符串,begin的索引值从0开始编号

      step

      true

     int

指定迭代的步长,即每次迭代后的迭代因子增量

注意:

(1)       如果指定begin属性,其值必须大于或等于零

(2)       如果指定步长(step属性),其值必须大于或等于1

(3)       如果指定的end属性的值小于begin属性的值,不执行迭代操作

例子: forTokens.jsp

(1)    使用“|“为分隔符

     <c:forTokens var=”token” items=”spring,sunmmer|autumn,winnter” delims=”|”>

        ${token}&copy;

     </c:forTokens>

 

(2)    使用“|”和“,”作为分隔符

<c:forTokens var=”token” items=”spring,sunmmer|autumn,winnter” delims=”|,” end=” 3” >

        ${token}&copy;

</c:forTokens>

 

(3)    使用“-”作为分隔符

<c:forTokens var=”token” items=”year—season—month-week” delims=”-” >

        ${token}&copy;

</c:forTokens>

结果:

(1)    spring,summer(c)auntumn,winter(c)

(2)  spring(c)summer(c)autumn(c)winter(c)

(3)  year(c)season(c)month(c)week(c)

 

<c:remove>标签:

       用于删除各种web域中的属性

语法:

<c:remove var=”varName”

[scope=”{ page | request | session | application}”] />   

 

var属性用于指定要删除的属性的名称,scope属性用于指定要删除的属性所属的web域,它们的值都不能接受动态值,如果没有指定scope属性,<c:remove>标签就调用PageContext.removeAttribute(varName)方法,否则就调用PageContext.removeAttribute(varNamescope)方法,<c:remove><c:set>标签第一种语法格式的value属性值为null时的作用相同。

例子:c_remove.jsp

      <c:set value=org.it 315” var=companyscope=request/>

      <c:set var=password scope=session>

         a123456

      </c:set>

(1)  没有使用remove标签前,变量值为:

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

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

<c:remove var=company scope=request/>

<!—c:set var= “company”scope=request”此行与上面红色部分作用是一样的-->

<c:remove var=”password”scope=session/><br/>

(2)  使用remove标签后的变量的值:

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

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

运行结果:

(1)       companyorg.it315

password:a123456

(2)company:

password:

 

 

<c:catch>标签:

         用于捕获嵌套在标签体中的内容抛出的异常。

语法:

     <c:catch [var=varName]>

         nsted actions

     </c:catch>

var属性用于标识<c:catch>标签捕获的异常对象,其值是一个静态的字符串,不支持动态属性值,<c:catch>标签将捕获的异常对象以var指定的名称保存到page这个web域中。如果没有指定var属性,则<c:catch>标签仅捕获异常,不在page域保存异常对象。如果<c:catch>标签体中的内容没有抛出异常,<c:catch>标签将从page域中删除var属性指定的属性。

<c:catch>标签可以捕获任何标签抛出的异常,并且可以同时处理多个标签抛出的异常,这样可以对jsp页面的异常进行统一处理,显示给用户一个更友好的页面。Jsp处理异常的通用机制是出现重要异常后跳转到错误处理页面,建议尽量不使用<c:catch>标签来代替jsp的错误处理机制。只对一些次要异常才使用<c:catch>标签进行捕获处理。

例子:c_catch.jsp

      <c:catch var=myex>

      <%

        int i=0;

        int j=10;

        out.println(j+”/”+i+=+j/i);

%>

</c:catch>

(1)  异常:<c:out value=${myex}/><br/>

(2)  异常:myex.getMessage: <c:out value=${myex.message}/><br/>

(3)  异常:myex.getCause: <c:out value=${myex.cause}/><br/>

(4)  异常:myex.getStackTrace: <c:out value=${myex.StackTrace}/><br/>

 

<c:catch>标签内嵌套的脚本元素抛出了异常,<c:catch var=myex>将捕获到这个异常,调用<c:out value=${myex.message}/>相当于调用<%=myex.getMessage()%>

运行结果:

(1)       java.lang.ArithemticException: /by zero

(2)       myex.getMessage: /by zero

(3)       myex.getCause:

(4)       myex.getStackTrace:[L java.lang.StackTraceElement:@b 3319f

 

 

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

先建一个jsp文件:register.jsp

<%

   String name = request.getParamter(“name”);

   name = new String(name.getBytes(“iso-8859 -1” ),gb 2312 );

   session.setAttribute(“name”,name);

   String country = request.getParamter(“country”);

   country = new String(country.getBytes(“iso-8859 -1” ),gb 2312 );

   session.setAttribute(“country”, country);

%>

name=${name};

country=${country}<br/>

<c:param>标签:可以嵌套在<c:url>,<c:redirect>,<c:import>标签内,为这些标签使用的url地址附加参数。<c:param>标签在为一个url地址附加参数时,将自动对参数进行url编码。

 

例如:如果传递的参数值为“中国”,则转换为%d6%d0%b9%fa后,附加到url地址后面。

语法:

     1<c:param name=namevalue=value/>

      (2) <c:param name=name>

              paramter value

          </c:param>

 

                         <c:param>标签的属性

属性名

是否支持EL

属性类型

属性描述

name

true

String

参数的名称

value

true

String

参数的值

 

 

<c:url>标签:

      用于在jsp页面中构造一个url地址,主要目的是实现url重写,url重写就是将会话标识以参数形式附加在url地址后面。

      语法:

          1)没有标签体:

<c:url value=”value

[context=”context”]

[var=”varName”]

[scope=”{page|request|session|application}”] />

          

(2)       有标签体,在标签体中指定构造的url的参数:

<c:url value=”value

[context=”context”]

[var=”varName”]

[scope=”{page|request|session|application}”] >

<c:param>标签

       </c:url>

 

                    <c:url>标签的属性

属性名

是否支持EL

属性类型

属性描述

    value

    true

     String

指定要构造的url

    context

    true

     String

当要使用相对路径导入同一个服务器下的其他web应用程序中的url地址时,context属性指定其他web应用程序的名称

    var

    false

     String

指定将构造出的url结果保存到web域中的属性名称

    scope

    false

     String

指定将构造出的url结果保存在哪个web域中

 

value属性所指定的url可以是相对路径和绝对路径

使用<c:url>标签构造url时,可以通过嵌套的<c:param>标签指定参数或在value属性中直接指定参数。

例子:url.jsp

(1)       使用绝对路径构造url

<c:url value=”http://localhost:8080/JSTL/URL/register.jsp  var=”myUrl 1” >

     <c:param name=”name” value=”张三”/>

     <c:param name=”country” value=”${param.country}”/>

</c:url>

<a href=”${ myUrl1}”>ha1</a><br/>

 

 (2)   使用相对当前jsp页面的路径构造url

      <c:url value=”register.jsp?name=wangwu&country=France” var=”muUrl 2” />

<a href=”${ myUrl2}”>ha2</a><br/>

(3)   使用相对当前web应用的路径构造url

     <c:url value=”URL/register.jsp?name=zhaoliu&country=England” var=”muUrl 3” />

<a href=”${ myUrl3}”>ha3</a><br/>

 

结果:在浏览器地址栏输入http://localhost:8080/JSTL/url.jsp?country=china

1

<a href=”http://localhost:8080/JSTL/URL/register.jsp?name=%d5%d0%&country=China”>ha1</a><br/>

 (2) <a href=” register.jsp?name=wangwu&country=France”>ha2</a><br/>

(3) <a href=” /JSTL/URL/register.jsp?name=zhaoliu&country=England”>ha3</a><br/>

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值