当前位置: 代码迷 >> JavaScript >> EL表述示入门与JSTL的core标签
  详细解决方案

EL表述示入门与JSTL的core标签

热度:270   发布时间:2012-09-28 00:03:35.0
EL表达示入门与JSTL的core标签

一.EL表达示

全称:ExpressionLanguage。出现意义:替代JSP中的Java表达式的。

基本语法:${EL表达式}

主要功能:

1.      获取数据

${person}:会调用pageContext.findAttribute方法从pagerequestsessionapplication范围内依次查找名称为person的对象。若没有打印空字符串,而不是null

EL表达式也可以很轻松获取JavaBean的属性,或获取数组、CollectionMap类型集合的数据,例如:

?  ${user.address.city}

?  ${user.list[0]}:访问有序集合某个位置的元素

?  ${map.key}  :获得map集合中指定key的值

2.      执行简单的数据或逻辑运算

2.1关系运算符:==!=><>=<=  <c:if test=”${user1.age>=user2.age}”…

2.2 逻辑运算符:&&||!<c:if test=”${!empty user && ! empty user2}” …

2.1Empty运算符:判断对象是否是空的。对于集合类型的,如果其中没有任何元素,即使集合对象本身存在不是null,也返回true

2.3三元表达示:${user!=null?user.name : “”}

注意:EL表达示不支持字符串链接操作、[]运算符支持索引,.运算符能搞定的,[]都能搞定呢。而有些如请求头,头名称不符合java规范的,必须使用[]

比如:${person.name}${person[“name”]}${person[‘name’]}

3.      获取Web开发常用对象:EL表达式有11大隐示对象

3.1 pageContext Jsp中的PageContext内置对象一样可以获取session等。

3.2 pageScope:page范围的Map

3.3 requestScope

3.4 sessionScope: session范围的Map域,用法如:sessionScope.user表示获取session范围内的user引用的对象。

3.5 applicationScope:

3.6 header保存了请求头信息的Map对象。key:头名称  value:头值。如:${header['Accept-Encoding']}

3.7 headerValues

3.8 param:保存了请求参数的map对象,key请求参数名,值是传过来的参数值。如: ${paramValues.hobbys[1]}

3.9 paramValues:保存了请求参数的map对象。Key是请求参数名,值是数组如${paramValues.hobbys[1]}

3.10 cookie:保存了所有Cookiemap对象.keycookiename值,而value是某一个cookie对象。如:

${cookie.JSESSIONID.name}=${cookie.JSESSIONID.value}

3.11 initParam:保存了web应用中所有的初始化参数的map对象。在web.xml中所有的<context-param中配置的值。如

${initParam.encoding}

4.      调用普通Java类的静态方法

开发步骤:定义EL函数。(与自定义标签的开发步骤一致的)

a、编写一个类,有一个静态方法

b、在WEB-INF目录下,建立一个扩展名为tldxml文件(找Tomcat中的例子),对那个静态方法进行描述

c、在JSP页面中通过taglib指令引入该tld文件

           d、在EL中就可以调用那个静态方法了

二、标签:JSTL标签库coreifforeach,标签出现的意义在于替换掉jsp中的脚本的。

注意:JSTL标签库使用前要引用标签库。下面列出两个重要的core中的标签<c:if<c:foreach

2.1 if:用于判断,属性有以下:

         Test,必须要有,返回boolean值。Test返回true,那么主体内容显示

         Var:用于存放test运算结算,true还是false的结果用引用变量保存起来.

         Scope:指var存放的结果保存哪个域范围。

         如:<c:iftest=”${user1.age>=user2.age}” > user1的年龄比user2</c:if>

2.2 forEach,用于迭代,主要有以下属性:

         Items:遍历的集合

         Var:指向当前的元素

         Begin:开始的索引

         End:结束的索引

         Step:步长,跳过多个元素

         varStatus:该对象中保存有当前结果集的一些索引位置等信息如有:

                   getIndex()getCountisFirst()isLast()方法。

         具体如下:

<c:forEachitems="${str}"begin="1"end="10"var="num"step="3"varStatus="vs"  >

              ${num}<br/>${vs.index%2==0?'red':'green'}

              ${vs.count}次循环

    </c:forEach>