EL表达式
1.EL工具包介绍
1.概念:由Java技术开发的一个jar包
2.作用:降低JSP文件开发时java命令开发的难度。
3.Tomcat服务器本身自带了EL工具包(Tomcat安装地址/lib/el-api.jar)
2.回顾 多个Servlet之间共享数据的方案
1.全局作用域对象:ServletContext
2.会话作用域对象:HTTPSession
如果两个Servlet来自同一个网站,并且为同一个浏览器/用户提供服务
3.请求作用域对象:HTTPServletRequest
3.JSP文件将处理结果回写到响应体中的两种方式
1.传统JSP文件将处理结果回写到响应体中
1 <% 2 Integer sid =(Integer)application.getAttribute("sid"); 3 String sname =(String)session.getAttribute("sname"); 4 String home =(String)request.getAttribute("home"); 5 %>
2.使用EL表达式简化传统方式
1 学员ID:${applicationScope.sid}<br/> 2 学员姓名:${sessionScope.sname}<br/> 3 学员地址:${requestScope.home}
4.EL表达式和作用域对象对照表
对象名称 EL表达式对应格式 注释
----------------------------------------------------------------------------
ServletContext applicationScope 全局作用域对象
HTTPSession sessionScope 会话作用域对象
HTTPServletRequest requestScope 请求作用域对象
pageContext pageScope 当前页作用域对象
----------------------------------------------------------------------------
1 pageContext对象简单说明 1.它是JSP文件中独有的作用域对象,Servlet中不存在 2. 在当前页作用域对象存放的共享数据仅能在当前JSP文件中使用 3 不能共享给其他Servlet或者其他JSP文件。 4 真实开发过程中,主要用于JSTL标签与JSP文件之间的数据共享 JSTL ---> pageContext ---> JSP
简单总结: 有了EL表达式以后,就不要在JSP文件中书写java命令了,浪费时间。
5.EL表达式
1.命令格式:${作用域对象别名.共享数据}
2.命令作用:
1.EL表达式是EL工具包提供的一种特殊命令格式【表达式命令格式】
2.负责在JSP文件上从作用域对象读取指定的共享数据并输出到响应体
6.EL表达式将引用对象属性写到响应体中
1.命令格式:${作用域对象别名.共享数据名.属性名}
2.作用: 从作用域对象中读取指定共享数据关联的引用对象的属性值,并自动将属性的结果写入到响应体中
3.属性名:大小写要完全一致
4.示例:
1 学员编号:${requestScope.key.sid}<br/> 2 学员编号:${requestScope.key.sname}
5.EL表达式不能遍历集合,无法从作用域中读取集合内容输出。但是:在JSTL中弥补了这个不足。
7.EL表达式简化版
1.命令格式:${共享数据名}
2.命令作用:EL表达式允许开发人员省略作用域对象别名
3.示例:
标准版:${sessionScope,key}<br/>
简化版:${key}
4.工作原理
EL表达式简化版由于没有指定作用域对象,所以在执行时采用就近原则(作用域从小到大)输出
pageContext ---> request ---> session --->application
如果上面四个作用域对象都没有,就返回null。
5.缺点:
1.降低程序执行速度,因为它每次都要在四个作用域中查找一遍
2.容易导致数据定位错误
6.应用场景:设计目的就是简化从pageContext中读取数据并输出,而不是用在其他三个Servlet作用域中
7.但是:实际开发过程中,为了节省时间,一般都使用简化版,拒绝使用标准版。
8.EL表达式支持的运算表达式
1.前提:在JSP文件中有时需要将读取的共享数据进行一番运算后,再将结果写入到响应体中。
2.运算表达式:
1.数学运算
2.关系运算: > >= == <= !=
gt ge lt le !=
3.逻辑运算 && || !
3.EL表达式输出关系运算:${age > 18?"欢迎光临":"谢绝入内"}
4.JSP只做输出,复杂判断在Servlet里面做。
9.EL表达式 其他内置对象
只做了解即可
1.需求:通过当前请求对象读取当前请求包中的请求参数内容,并将请求参数内容写入到响应体中
index.jsp
发送请求:Http:localhost:8080/myweb/index.jsp?userName=mike&password=123
2.命令格式:
1.传统方式
1 <% 2 String userName = request.getParameter("userName"); 3 String password = request.getParameter("password"); 4 %> 5 <%=userName> 6 <%=password>
2.EL表达式方式:${param.请求参数名}
3.示例
来访者姓名:${param.userName}<br/>
来访者密码:${param.password}
4.测试:浏览器输入网址并确定就能得到需要的内容:Http:localhost:8080/myweb/index.jsp?userName=mike&password=123
=================================================================================================
1.需求:如果浏览器发送的请求参数是【一个请求参数关联多个值】,此时可以通过paramValues读取请求参数下指定位置的值,并写入到响应体中。
index.jsp
发送请求:http:localhost:8080/myweb/index2.jsp?pageNo=1&pageNo=2&pageNo=3
此时,pageNo请求参数在请求包中以数组形式存在:pageNo:[1,2,3]
2.命令格式:
1.传统方式:
1 <% 2 String array[] = request.getParameterValues("pageNo"); 3 %> 4 第一个值:<%=array[0]%> 5 第二个值:<%=array[1]%>
2.EL表达式方式:${paramValues.请求参数名[下标]}
3.示例
第一个部门编号:${paramValues.deptNo[0]}
第二个部门编号:${paramValues.deptNo[1]}
第三个部门编号:${paramValues.deptNo[2]}
4.测试:http:localhost:8080/myweb/index2.jsp?deptNo=1&deptNo=2&deptNo=3

浙公网安备 33010602011771号