JavaBean在JSP中的局限
获取JavaBean属性必须要实例化
强制类型转化
<% Employee employee = (Employee)request.getAttribute("employee"); Computer comp = employee.getComputer(); String manufacturer = comp.getManufacturer(); %>
如果页面编写出现逻辑错误,将会导致代码执行错误,并且JSP页面编译页面时也会产生错误
解决办法
使用EL表达式简化
什么是EL
EL即Expression Language(表达式语言)
EL的功能
替代JSP页面中的复杂代码
EL的语法
${ EL exprission }
${ bean.name } 或 ${ bean[‘name‘] }
${bean.name}实质是调用bean的getName()方法
注: 1 el通过.和[]来存取数据。 例如${applicationScope.user.userName}或者${applicationScope.user["userName"]}
2 如果存取的属性名称包含一些特殊符号,如"."或者是"-"等非字母或数字符号必须用[]
3 applicationScope.user["user-Name"]
4 如果使用变量来传入,那么也只能使用[].例如
<%String data="username";%>
${applicationScope.user[data]}
5 当然有四个隐含对象:applicationScope,sessionScope,requestScope,pageScope.与application ,session,request,pageContext相对应.例如applicationScope用
来获取application范围的属性值
自动转换类型
EL得到某个数据时可以自动转换类型
对于类型的限制更加宽松
使用简单
相比较在JSP中嵌入Java代码,EL应用更简单
EL语法
以“${”作为开始,以“}”作为结束
直接使用变量名获取值$
${ username }
变量属性范围名称
属性范围 EL中的名称
page pageScope,例如${pageScope.username},表示在page范围内查找username变量,找不到返回Null
request requstScope
session sessionScope
application applicationScope
EL运算符
运算符”[ ]”
运算符”.”
作用
获取对象属性
获取对象集合中的数据
在Session中保存了一个(list)集合users
简单应用:输出姓名显示
<%
Map names = new HashMap();
names.put("one","LiYang");
names.put("two","WangHua");
request.setAttribute("names",names);
%>
姓名:${names.one}<br/>
姓名:${names["two"] }<br/>
EL隐式对象介绍
对象名称 说 明
pageScope 返回页面范围的变量名,这些名称已映射至相应的值
requestScope 返回请求范围的变量名,这些名称已映射至相应的值
sessionScope 返回会话范围的变量名,这些名称已映射至相应的值
applicationScope 返回应用范围内的变量,并将变量名映射至相应的值
param 返回客户端的请求参数的字符串值
paramValues 返回映射至客户端的请求参数的一组值
pageContext 提供对用户请求和页面信息的访问