EL表达式 与 JSTL标签库

Posted wzhsc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EL表达式 与 JSTL标签库相关的知识,希望对你有一定的参考价值。

EL表达式

什么是el

jsp内置的表达式语言

el表达式的作用

代替脚本

el如何获取数据

1、获取域中的数据

简单数据:${域中的key值}

注意:如果多个域中的key值一样 那么取出的顺序?

从范围小的开始查找,查找到以后就返回

如果没有查询到对应的key 返回""(空字符串)

例如:

<%

pageContext.setAttribute("num", 5);

request.setAttribute("num", 1);

session.setAttribute("num", 0);

application.setAttribute("num", 2);

 %>

<p>${ requestScope.num}</p>

 <p>${ sessionScope.num}</p>

<p>${ applicationScope.num}</p>

<p>${ num}</p>

复杂数据:

数组:${域中的key值 [ index ] }

list:${域中的key值 [ index ] }

map:

一般数据:${域中的key值.map中的key}

如果map的是特殊(数字等):${域中的key值 [ " key " ] }

javaBean导航:

javaBean:我们编写的一个普通java类:类似:User,Person……

javaBean规范:

1、必须是一个共有的类

2、提供私有字段

3、必须提供私有字段公共的get、set方法(boolean :is)

4、必须提供无参构造

5、一般来说需要实现Serializable接口(序列化)

用法:

${域中的key值.javabean属性}

javabean属性:就将get或set方法去掉头(set,get) 然后将首字母小写

2、el表达式的内置对象:pageContext

${ pageContext.request.contextPath}   <!--获取项目的根路径-->

${pageContext.request.requestURI}   <!-- 请求的url -->

${pageContext.request.queryString}   <!-- 获取查询参数-->

${pageContext.request.method}   <!-- 请求方式-->

${pageContext.request.protocol}   <!-- http协议-->

${pageContext.request.serverName}   <!-- 服务器名字-->

3、el中的保留字段

 

and eq  gt div
or ne  le mod
no lt  ge true
instanceof empty  null false

4、el执行运算

算数:

+:只能进行加法,不能实现拼接

/:div        例如:${ 10 / 2 }  等同于  ${ 10 div 2 }

%:mod    例如:${ 10 % 2 }  等同于  ${ 10 mod 2 }

关系:

> 或者 gt        例如:${8>9}   或者   {8 gt 9 }

>= 或者 ge     例如:${45>=9}   或者   ${45 ge 9 }

< 或者 lt         例如:${4<9}   或者   ${4 lt 9 }

<= 或者 le      例如:${9<=8}   或者   ${9 le 8 }

== 或者 eq     例如:${4==4}   或者   ${4 eq 4 }

!= 或者 ne      例如:${4!=3}   或者   ${4 ne 3 }

逻辑:

&& 或者 and    例如:${false && false}   或者   ${false and false }

|| 或者 or         例如:${true || false}   或者   ${true or false }

! 或者 not        例如:${!true}(相当于${false})   或者   {not true }

empty:判断容器的长度是否为0、判断对象是否为空

例如:

技术分享图片

 

 

JSTL 标签库

 作用:用来代替脚本

导入格式:

taglib:导入标签库

<%@ taglib prefix="",uri="" %>

prefix:前缀(一个命名)

uri:标签路径

JSTL标签库的分类

核心标签:Core

if:条件判断

属性:

test:条件表达式(${})

var:接收条件表达式的结果

scope:var变量的作用范围

例如:

<c:if test="${ 1==1}" var="result" >

${result}

1 等于 1

</c:if>

<c:choose>(与switch的功能类似)

属性:

choose:switch

when:case

otherwise:defalut

例如:

<c:choose>

<c:when test="${3>4}">

3>4

</c:when>

<c:when test="${3<4}">

3<4

</c:when>

<c:otherwise>

3 = 4

</c:otherwise>

</c:choose>

<c:foreach>:循环

属性:

begin:开始

end:结束

step:递增值

items:要遍历的对象

var:遍历结果

varStatus:循环状态

对象:

index:以begin的值为开始下标

count:当前执行的次数

first:判断是否为第一个变量,是(返回true),否(返回false)

last:判断是否为最后一个变量,是(返回true),否(返回false)

例子:

<c:forEach begin="5" end="10" step="1" var="i" varStatus="vs">

${vs.index}<br>

${vs.count}<br>

${vs.first}<br>

${vs.last}<br>

变量值:  ${i}<br>

</c:forEach>

<c:out>:<%=%> 输出

<c:set>:向域中设置值

属性:

value:值

var:key

scope:域

例如:

<c:set value="abc" var="msg" scope="request"></c:set>

格式化标签:fmt

例如:

<c:set var="now" value="<%=new Date()%>" scope="request"></c:set>

<p> <fmt:formatDate value="${now}" type="both"></fmt:formatDate></p>

函数标签:fn

例如:

<c:set value="abc" var="msg" scope="request" ></c:set>

${fn:toUpperCase(msg)}

${fn:contains("aaabc","aaa" )}

以上是关于EL表达式 与 JSTL标签库的主要内容,如果未能解决你的问题,请参考以下文章

EL表达式 与 JSTL标签库

JAVA Web基础 EL表达式与JSTL标签库

JAVA Web基础 EL表达式与JSTL标签库

EL(表达式语言)与JSTL(JSP标准标签库)

Ognl 和 EL 和jstl区别

09-EL 表达式 & JSTL 标签库