EL和JSTL-01的使用
前言
为在编写JSP时提高体验感,学习EL表达式和JSTL标签库
一、EL、JSTL是什么?
EL 表达式 :
全称:Expression Language,一种写法非常简洁的表达式。语法简单易懂,便于使用。原是JSTL1.0中取存数据的自定义语言,后是jsp2.0的规范之一特点语法简单使用方便,只拿来做输出.
EL 表达式的作用 :
让 jsp 书写起来更加的方便。简化在 jsp 中获取作用域或者请求数据的写法。也会搭配 Jstl 来进行使用。
EL特点:
可与JSTL及Javascript语句结合使用
自动执行类型转换
直接访问JavaBean中的属性嵌套届性
·集合对象可执行运算
·算术、迄辑、关系、条件可获得命名空间(的对象)除ü没有异常
可访问作用域对象
扩展函数可以与java里的静客方法执行映射。
JSTL 标签库:
1)JSTL 是 apache 对 EL 表达式的扩展(也就是说 JSTL 依赖 EL),JSTL是标签语言!JSTL 标签使用起来非常方便,它与 JSP 动作标签一样,只不过它不是 JSP 内置的标签,需要我们自己导包,以及指定标签库 而已!
2)如果你使用 MyEclipse 开发 JavaWeb,那么在把项目发布到Tomcat 时,你会发现,MyEclipse 会在 lib 目录下存放 jstl 的 Jar 包!如果你没有使用 MyEclipse 开发那么需要自己来导入这个 JSTL 的 Jar包:jstl-1.2.jar。
JSTL 标签库的作用:
用来提升在 JSP 页面的逻辑代码的编码效率,使用标签来替换逻辑代码的直接书写,高效,美观,整洁,易读。
二、使用步骤
1.使用 EL 表达式 :
使用 EL 表达式 :
EL使用条件:
Web服务器支持Servlet2.4/JSP2.0EL表达式未禁用
-禁用方法
·
·<%@ page isELlgnored="true”%>. web.xml中配置元素正确使用表达式
1 .EL表达式获取请求数据
1)获取请求实体(获取用户请求数据)
2)获取请求头数据
3)获取Cookie数据
- EL表达式获取作用域数据
作用域对象:pageContext—request—session—application
作用域:使用setAttribute方法存储的数据
获取:1)普通字符串数据–> ${键名}
2) 对象数据—> ${键名.属性名}
3)集合数据
a)list集合—> ${键名[角标]}
b)Map集合—> ${Map集合作用域储存的键名.Map集合储存的数据的键名}
作用域查找顺序:
1)如果找到了就不再找了;如果找不到,则继续查找下一个作用域;如果四个作用域都没有找到,则网页没有反馈。
2)pageContext—>request—>session—>application
指定作用域获取数据:
3.EL表达式逻辑运算
1)算术运算:+,-,*,/ 在EL表达式中可以直接进行算术运算
声明格式–> 算 术 表 达 式 例 如 : {算术表达式} 例如 : 算术表达式例如:{1+2}
注意: +(加号)表示算数运算,不能进行字符串连接
2)逻辑运算:&& || !
声明格式–> ${逻辑表达式}
注意:没有单& 和单|
3)比较运算:== != >,>=,<,<=
声明格式–> ${比较表达式}
3)三目运算:
声明格式–> ${条件?值1:值2}
4)EL表达式的empty判断
empty—>作用:判断该键没有储存有效数据。—>有值返回false;没值返回true。
2.使用JSTL
使用JSTL的流程:
1)先导入jar包(myEclipse自带JSTLjar包,不需要导入);
2)再引入核心标签库。
如何在jsp中引入标签
1)out标签:
<c:out value=“${表达式}” default=“默认值”></c:out>
结合EL表达式将数据响应给浏览器
<%=request.getAttribute(“str”) %>
2)set标签:
<c:set value=“set标签学习2” var=“s2” scope=“request”></c:set>
将数据存储到指定的作用域中,默认是pageContext作用域(page)
<%request.setAttribute(“s1”,“set标签学习”); %>
3)remove标签
<c:remove var=“要删除数据的键名” scope=“作用域名”/>
pageContext.removeAttribute(“hello”,4);此方法会将四个作用域中的符合要求的数据全部删除。
request.removeAttribute(“hello”);
session.removeAttribute(“hello”);
application.removeAttibute(“hello”);
删除作用域中的数据,默认是删除四个作用域中的符合要求的数据。
remove标签注意事项:remove标签要指定作用域scope,如果没有指定,则默认为page。
4)if标签
a.单分支判断标签:
if标签注意事项:test属性中书写的是EL表达式,该标签只能进行EL表达式相关的逻辑判断。
5)多分支choose标签
choose标签的使用基本格式:
choose标签注意事项:符合条件后只会执行一个分支,其他分支不会执行。
6)循环标签普通循环
循环标签的begin和end属性的作用:
begin:声明循环的开始位置。
end:声明循环的结束位置。
环标签的step属性和varStatues属性的作用:
step:声明循环的步长(即每次递增多少)
varStatus:声明变量记录循环状态(包括 index,count,first,last)
c. varStatus属性获取循环状态的内容都有哪些及其作用:
i.index 获取当次循环的下标
i.count获取当次循环的次数
i.first判断是否是第一次循环
i.last判断是否是最后一次循环
循环标签遍历集合:
循环标签的item和var属性的作用:
items:声明要遍历的数据,可以是集合和数组等。
var:声明变量记录每次遍历的结果,是数据。可以在循环体中直接使用EL表达式获取遍历出来的数据。
总结
有多少种在JSP页面输出值的方式
7种
- 内置九大对象之out
- <%= %> JSP输出表达式 JSP中出现大量脚本
- response.getWriter() null 97
4.response.getOutputStream() 没有任何的数据过滤 - <c:out> 默认使用HTMLFilter进行数据的过滤
- EL 主要是和核心标签库结合使用
- System.out
迭代方式适合输出什么样的数据:
字符串、集合、元
组、列表、字典都属于可迭代类型。当然对于较
高级的数据类型例如:队列、栈、顺序字典、名称
元组都是可迭代类型
foreach除了使用迭代接口实现输出之外,从JDK1.5开始加强型的for循环也可以实现集合输出了,这种形式与我们使用for循环输出数组类似。