JSTL标签库与EL表达式

JSTL标签库

  1. 由于JavaBean无法获得运行环境,无法与JSP页面进行更加深层次的交互,所以在JSP中引入了自定义标记机制JSTL。标记库的处理类不但有JavaBean的功能,而且将JSP的环境信息传递到类的中间,从而彻底解决了Web组件开发中的表示和业务逻辑代码的分离。大大增强了代码的可读性、可维护性、可复用性。

     

  2. JSP中使用JSTL需要两个JAR文件

      1)第一个文件是jstl.jar,它为JSTL标记库提供API

      2)第二个文件是standard.jar,它提供了标记库的实现类 。复制到WEB-INF目录下的lib <%@ taglib uri=http://java.sun.com/jsp/jstl/coreprefix=c%>引入到JSP

     

  3. JSTL标准标记库

      

功能范围

作用

URL

前缀

核心(core

一般用途处理的标记

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

c

xml

解析、选择、转换XML数据的标记

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

x

数据库(sql

访问关系型数据库的标记

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

sql

国际化(I18N

为国际化应用格式化数据的标记

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

fmt

 

函数(Functions

处理字符串和集合的标记

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

fn

 

4JSP中通过taglib指令引用标记库

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

 

5.SUNJSTL核心标记分为四类

1)通用标记:<c:catch><c:out>

  <c:catch var=e>

   会抛出异常的代码

  </c:catch>

      如果标记之间抛出了异 常,异常的值会存在页面范围e中,否则e会被删除

     <c:out value=${number}/>

     如果value属性包括字符<>或者& 标记会显示相关的字符码 如:>显示

      >.

     如果属性的变量还没有初始化,可指定一个默认值通过第二个属性default设置 如:

    <c:catch var=${color} default=red/>

  1. 变量支持标记:<c:set><c:remove>

           使用<c:set>设置变量需要用该标记的var属性指定变量的名称,然后用标记的

         Value属性或标记体来设置变量的值 如下两个:

         <c:set var=num value=${4*4}/>

         <c:set var=num>

          ${8*2}

         </c:set>

         以上两种方式都将num变量的值设置为16。第二种方法允许我们在<c:set>标记内插

          标记操作。如:

         <c:set var=num>

         <c:out value=${8*2}/>

         </c:set>

    设置JavaBean对象customer1zipcode属性

    <c:set target=customer1 property=zipcode>

    55501

    </c:set>

    或者

    <c:set target=customer1 property=zipcode value=55501>

    使用<c:remove>标记从session作用域删除num变量

    <c:remove var=num scope=session/>

    它与<c:set>不同的是 <c:remove>标记不能用于JavaBeanMap对象

  2. 流程控制标记:<c:if><c:choose><c:forEach><c:cforTokens>

          <c:if><c:choose>的功能与java中的ifswitch语句基本相同,不同的是核心

          标记库中没有else标记

          代码只在显示x=9时才显示x的值

          <c:if text=${x==9}>

            ${x}

          </c:if>

     

         <c:choose>

           <c:when text=${color==white}>

              Light!

           </c:when>

            <c:when text=${color==black}>

              Dark!

           </c:when>

            <c:otherwise>

              Color!

           </c:otherwise>

          </c:choose>

          它与javaswitch语句一样,在JSTL<c:choose>标记中,当没满足条件时,使用可

          <c:otherwise>标记作为默认选项

     

          循环: <c:forEach><c:forTokens>

             如下,下面的jps0~30计数,每隔三个数字在页面:

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

       <html><body>

          <c:forEach var=x begin=0 end=30 step=3>

              ${x}

          </c:forEach>

       </body></html>

       <c:forEach>标记也可以用于对java集合对象(列如 VectorListMap)的元素执行循环操

       

       <c:forEach var=num item=${numArray}>

         <c:set var=num value=100/>

       </c:forEach>

       </body></html>

      

       <c:forTokens>标记用于循环处理字符串中由分隔符分隔的各成员

       <c:forTokens items=..  delims=..

          [var=..] [varStatus=..] [begin=begin=..] [end=..] [step=..]>

         内容体

       </c:forTokens>

    其中 items 属性是要处理的用分隔符分隔的字符串对象,而delims指定分隔符

    列如,下面的代码创建了一个表格,并且使用numlist字符串的内容填充单元格

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

    <%@ page contentType=text/html;charset=gb2312 %>

    <html><body>

       <c:set var=numList value=one,two,three,four,five,six/>

       forTokens标记的输出:<p>

       <table border=1>

    <c:forTokens var=num items=${numList} delims=,>

      <tr><td>${num}</td></tr>

    <c:forTokens>

    </table>

    </body></html>

    4URL处理标记:<c:url><c:import><c:iredirect>

    <c:url>,重写URL并对其参数编码

    <c:url value=/page.html var=pagename/>

    <c:url>标记的内容体中使用<c:param>标记,还可以为URL添加参数 如:

    <c:url value=/page.html var=pagename>

     <c;param name=param1 value=${2*2}/>

     <c;param name=param1 value=${3*3}/>

    </c:url>

     

    访问servelet容器外的内容,就必须使用<c:import>标记

    <c:import url=/content.html var=newstuff scope=session>

      <c:param name=par1 value=vall1/>

      <c:param name=par2 value=vall2/>

    </c:import>

    <c:redirect>标记功能与HttpServletResponsesendRedirect()方法相同,发送一个重定向响应到客户端,并告诉客户端去访问由其url属性指定的URL

    可以在<c:redirect>标记中使用context属性指定的url上下文,使用<:param>标记添加参数 如

    <c:redirect url=/content.html>

     <c:param name=par1 value=val1/>

     <c:param name=par2 value=val2/>

    </c:redirect>

     

    EL表达式

  1. JSP页面中显示结果 jsp:useBeanjsp:getProperty两个元素冗长而笨拙 ,<jsp:getProperty>property属性只能访问Bean的属性,而不能访问嵌套的属性,所以使用JSP EL(即表达式语言Expression Language

  2. EL表达式和JSP脚本表达式

        EL表达式总是放在大括号里,而且前面有一个美元符前缀 ${person.name}

    JSP脚本表达式比较

    室外温度是 <%= temp %> 度。

    如果使用EL,则是:

    室外温度是${temp}

  3. EL表达式中使用隐式变量

类别

隐式变量名

描述

JSP

pageContext

用来访问JSP的隐式对象 

 

 

作用域

pageScope

与page作用域属性的名称和值相关联的 Map 类

requestScope

与request作用域属性的名称和值相关联的 Map 类

sessionScope

与session作用域属性的名称和值相关联的 Map 类

applicationScope

与application作用域属性的名称和值相关联的 Map 类

请求参数

param

包含请求参数字符串的Map 类

paramValues

包含请求参数字符串数组( String[])的 Map 类

请求头

header

包含请求头字符串的 Map 类

headerValues

包含请求头字符串数组(String[])的 Map 类

Cookie

cookie

按名称存储请求附带的 cookie 的 Map 类

 

  1. EL运算符

      EL运算符可以分为四类

    属性和集合访问运算符

    算术运算符

    关系运算符

    逻辑运算符

    访问属性和集合的EL运算符:

    a.b:返回a的属性b的值。

    a[b]:返回a的键或索引为b的值

    b是一个字符串的话,这两个运算符在EL中的操作方式是可以互换

    a[b]a[b]

    数组是通过整数访问的,运算符[]”不能被替换为运算符“.

     

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值