EL表达式和JSTL标签库

el表达式

  • JSP内置的一种表达语言
  • 作用
  1. 从域对象中获取属性的值
  2. 执行运算
  3. 提供了一些常用WEB对象(例子:cookie)
  4. 调用Java的方法
  • 语法:${表达式内容}
  • 注意事项:
  1. page指令:是否忽略el表达式。忽略了,jsp中就不能使用el了(isELIgnored)
  • 获取域中的值

如果域对象中属性的名称有相同的,使用EL表达式默认从最小的域中取值

list和数组使用下标值取值  ${  list[0]  }

如果是map集合或者对象       ${  map.aaa  }

            如果map集合中的key有特殊字符的话,使用${  map[ "c.d" ]  }

  • EL获取常用的对象

1. pageScope                      获取page域对象的值                ${  pageScope.age  }获取page域对象中的值

2. requestScope                 获取request域对象的值 

3. sessionScope                 获取session域对象的值 

4. applicationScope            获取application域对象的值  (servletContext)

 

5. param                     获取表单提交过来的参数 (相当于  request.getParameter())

6. paramValues          获取表单提交过来的参数   (相当于   Map<String,String[]> map = request.getParameterMap() )

7. header                    获取请求头信息

8. headerValues          获取请求头信息

9. initParam                 获取全局的初始化参数

 

10.cookie                    获取cookie对象的引用,可以使用这个引用获取cookie的名称和值

    前提条件:在servlet中创建了一个Cookie对象Cookie cookie = new Cookie("last","2015-11-11");

   ${ cookie.last }     -- 获取cookie的名称为last的对象

   ${ cookie.last.name }     -- 获取cookie对象的名称     last

   ${ cookie.last.value }       -- 获取cookie对象的值        2015-11-11

11.pageContext

            获取项目的虚拟路径(项目名称)        ${ pageContext.request.contextPath }

  • EL表达式支持运算         ${    }

1.关系运算符

等于    = = 或 eq                不等于     != 或 ne                小于      <  或 lt             大于  > 或 gt

小于等于 <= 或 le          大于等于  >= 或 ge       

2.逻辑运算符         

交集    && 或 and                 并集    || 或 or        非   ! 或 not

empty运算符:检查对象是否为null或“空”

三元表达式:    ${  user!=null ? user.name : ""   } 

 

JSTL标签库

需要两个jar包           jstl.jar          standard.jar

JSTL提供的核心标签        1.核心标签库(core)   ----c        2.fn.tld          EL函数库

注意:el表达式操作的都是域中的数据,使用前必须将值放到域中

核心标签库:

  • out标签         
  1.              语法:<c:out    value="" />                 
  2.              作用:输出域对象的值或者常量           
  3.              属性:value--输出的内容          default--默认值(如果输出没找到值,输出默认值)                 escapeXml--设置默认转义,默认是true,转义。设置成false,不进行转义
  • set标签                   向域中存入值
  1.              语法:<c:set     >
  2.              属性:var--属性名称           value--属性值         scope--域范围
  • remove标签
  • catch标签
  • if标签              只有c:if  没有c:else
  1.              属性:test  --判断条件,返回true或false      var    --test返回的结果保存到var声明的变量中              scope     --域的范围
  • choose标签
  1.                   作用:判断数据
  2.                   语法(注意)
相当于if   else if  else
<c:choose>
    <c:when test="">

    </c:when>

    <c:when test="">

    </c:when>

    <c:otherwise>

    </c:otherwise>

</c:choose>
  • forEach标签
  1.             作用:迭代数据, 例如:request域中,有一个list集合,使用forEach标签循环遍历list集合
  2.             语法:
  3. <c:forEach var="str" items="集合">
         ${ str }
    </c:forEach>
    
    
    <c:forEach  var="i" begin="1" end="10" step="1">
           ${ i }
    </c:forEach>

                属性:1.增强for循环 for(String str:集合)        var  --循环遍历的数据保存到var声明的变量中(相当于 str)               items  --要遍历的集合,注意:从域对象中取值(相当于集合)          2.普通for循环  for(int i=0;i<10;i++)   begin --从哪开始(相当于i=0)          end  --到哪结束(相当于i<10)          step   --步长(相当于i++)

  • url标签

  1.             作用:有提交的地址相关(超链接   form表单   img的src属性)

  2.              好处:1.假如使用form的action编写地址    <form action="${pageContext.request.contextPath}/xxx">                                           如果使用<c:url>标签          <form action="<c:url value='/xxx'  >">

  3.             特点:不写项目名,默认给你加上项目名

  4.             好处: 2.使用<c:url>   默认给你拼接jsessionid       session的追踪(在请求的地址加  jessionid=sdawd)

自定义EL函数

  • 开发EL函数的步骤
  1. 编写一个java类,提供一个方法,方法必须静态方法,必须有返回值
  2. 在WEB-INF目录下,编写一个 .tld 结尾的文件(xml文件)进行配置
  3. 在JSP的页面上引入自己编写的EL函数库
配置自定义EL函数
<function>
    <!--配置方法的名称-->
    <name>jsp中使用的方法名(和java文件中方法名无关)</name>
    <!-- 配置方法所在的类-->
    <function-class>类的全路径</function-class>
    <!-- 配置方法的签名(把类中的方法描述清楚)  -->
    <function-signature>返回类型  方法名 参数类型</function-signature>
</function>

自定义标签

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值