java el jstl_EL表达式和JSTL标签库

【46】

一、EL表达式

传统方式在jsp中获取作用域中的数据

pageEncoding="utf-8"%>

缺陷:

1、书写比较繁琐

2、需要导包

3、需要强转

--%>


使用EL表达式方式获取作用域数据

El表达式的语法:${表达式} 注意:自带响应功能

EL 隐含对象

JSP有9个隐含对象,而EL也有自己的隐含对象。EL隐含对象总共有11 个

El表达式的使用:

1、El表达式获取请求数据

获取用户请求数据(请求实体)

${param.键名} 获取请求实体中一个键一个值的数据

${paramValues.键名} 获取请求实体中同键不同值的数据,返回的是String数组,可以使用角标直接获取 例如:爱好

获取请求头数据

${header} 返回所有的请求头数据,键值对形式

${header["键名"]} 返回指定的键的请求头数据

${headerValues["键名"]}

获取Cookie数据

${cookie}获取所有的Cookie对象 键值对

${cookie.Cookie对象的键名} 获取存储了指定Cookie数据的Cookie对象

${cookie.Cookie对象的键名.name} 获取存储了指定Cookie数据的Cookie对象的存储的键

${cookie.Cookie对象的键名.value}获取存储了指定Cookie数据的Cookie对象的存储的值

2、EL表达式获取作用域数据

作用域对象:pageContext request session application

作用域数据:我们使用setAttribute方法存储的数据

获取:

普通字符串数据 ${键名}

对象数据 ${键名.属性名}

集合数据

list集合 ${键名[角标]}

Map集合 ${map集合作用域存储的键名.map集合存储的数据的键名}

作用域数据查找顺序:如果找到了则不再查找,如果找不到,则继续查找下一个作用域,如果四个作用域中都没有则什么都不显示

pageContext-->request-->session-->application

指定作用域获取数据:${pageScope.键名} 指明获取pageContext作用域中的数据

${requestScope.键名}指明获取request作用域中的数据

${sessionScope.键名}指明获取session作用域中的数据

${applicationScope.键名}指明获取application作用域中的数据

二、EL表达式逻辑运算

算术运算:+,-,*,/ 在EL表达式中可以直接进行算术运算

${算术表达式} 例如 :${1+2}

注意:+表示算术运算,不能进行字符串连接

逻辑运算:&& || !

${逻辑表达式} 注意:没有单& 和单|

比较运算:== != >,>=,

${比较表达式}

三目运算:${条件?值:值}

三、EL表达式的empty判断

${empty 键名}

作用:判断该键是否有存储有效数据


${str}

${user.fav}

${list[2]}

${list[3].fav}

${hs.b1}

${hs.u.fav}


获取用户请求数据(请求实体)

--${param.uname}

--${paramValues.fav[1]}

获取用户请求头数据

--${header["User-Agent"]}

--${headerValues["Accept-Language"][0]}

获取Cookie数据

${cookie}

${cookie.JSESSIONID}

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

EL获取作用域数据时作用域的查找顺序

pageContext.setAttribute("hello", "hello pageContext");

request.setAttribute("hello","hello request");

session.setAttribute("hello", "hello session");

application.setAttribute("hello", "hello application");

%>

${requestScope.hello}--${a}

EL表达式的逻辑运算

request.setAttribute("a","2");

%>

${1+2}--${2*3}--${a+3}--${1+"5"}

${2>3&&4<5}--${2>3||4<5}--${!(2>3)}

${2==2}--${3>2}

${2>3?"男":"女"}

EL表达式的empty判断

request.setAttribute("str","");

User u=new User();

request.setAttribute("u", u);

ArrayList la=new ArrayList();

request.setAttribute("la",la);

%>

${empty str}

${empty u}

${empty la}

二、JSTL标签库

JSTL学习:

作用:在jsp页面使用其可以非常方便的进行数据的处理。较与使用java代码块方法,更加的简单,代码更加的简洁易读。

使用:核心标签库

流程: 1、导入jar包 2、引入标签库

基本标签:

1、out标签:

作用:结合EL表达式将数据响应给浏览器,如果EL表达式没有取到数据则可以使用default属性声明默认值。

2、set标签:

作用:将数据存储到指定的作用域中,默认是pageContext作用域

注意: scope的值为:page request session application

3、remove标签:

作用:删除作用域中的数据,默认是删除四个作用域中的符合要求的数据。但是可以通过scope属性指明要删除的作用域数据。

注意:使用pageContext.removeAttriute("键名"),此方法会将四个作用域中的符合要求的数据全部删除

1、使用pageContext.removeAttriute(String name,int scope)

指明要删除的作用域中的数据 scope的值为 1pageContext,2request ,3 session,4 application

2、使用request.removeAttibute("键名") 删除当前作用域符合要求的数据

3、使用session.removeAttibute("键名") 删除当前作用域符合要求的数据

4、使用application.removeAttibute("键名")删除当前作用域符合要求的数据

逻辑标签:

1、单分支判断标签:数据

作用:可以根据el表达式进行一定程度的单分支逻辑判断。

注意:test属性中书写的是EL表达式,或者说是EL表达式的逻辑表达式。该标签只能进行EL表达式相关的逻辑判断。不能进行EL表达式不能获取的数据的逻辑处理

2、多分支判断标签:

..

注意:符合条件后只会执行一个分支,其他分支不会执行。

3、循环标签:

循环体

属性: begin:声明循环的开始位置

end:声明循环的结束位置

step:声明循环的步长

varStatus:声明变量记录循环状态 ,例如变量名:i

注意:记录的数据存储到了作用域中可以直接使用El表达式进行获取${i.index} 获取当次循环的下标

${i.count} 获取当次循环的次数

${i.first} 判断是否是第一次循环

${i.last}判断是否是最后一次循环

items:声明要遍历的数据,可以是集合和数组等。注意:要使用EL表达式来获取

var:声明变量记录每次遍历的结果。可以做循环体中使用使用EL表达式获取遍历出来的数据

JSTL学习:


request.setAttribute("str","jstl学习");

%>

--${str}--

default="我是out标签">

request.setAttribute("s1","set标签学习");

%>

${s1}--${requestScope.s2}

pageContext.removeAttribute("hello",4);

//request.removeAttribute("hello");//session.removeAttribute("hello"); %> --%>

${hello}

int b=4;

int a=Integer.parseInt((String)pageContext.getAttribute("a"));

if(a>8){

%>

今天天气真好,适合学习1

今天天气真好,适合学习2

奖励苹果电脑一台

奖励苹果手机一部

无奖励无惩罚

男女混合双打

我是第三次循环

11111--${i.index}--${i.count}--${i.first}--${i.last}

//创建测试数据listArrayList list=new ArrayList();

list.add("苹果");

list.add("榴莲");

list.add("荔枝");

//将list存储到作用域中request.setAttribute("list",list);

%>

${s}--${i.index}--${i.count}

//声明Map集合测试数据HashMap hs=new HashMap();

hs.put("s1","唱歌");

hs.put("s2", "跳舞");

hs.put("s3", "敲代码");

//将数据存储到作用域中request.setAttribute("hs", hs);

%>

${s.key}--${s.value}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值