JavaBean在JSP页面有局限性,获取JavaBean属性必须要实例化,强制转化类型,如果页面的代码编写出现逻辑错误,将会导致代码执行错误,并且编译jsp页面也会出错,所以一般不会把Java代码写在jsp页面上。
EL表达式可以替代jsp中的复杂代码,El 可以自动转化类型,对于类型的限制更加宽松了。
EL的主要语法:
${EL expreision },${bean.name},${bean['name']}
直接使用变量名取值:${username},${EL
exprission} ,${bean.name}或${bean['name']}
${bean.name}实质上调用了bean的getName()方法
| 属性范围 | EL中的名称 |
| page | pageScope,例如${pageScope.username} |
| request | requestScope |
| session | sessionScope |
| application | applicationScope |
EL运算符 [ ] . 获取对象的属性
${user.name}=${user[name]}
获取对象集合中的数据——在session中保存了一个list集合users——${sessionScope.users[1]}
举个例子:
获取对象中的属性
HashMap map=new HashMap();
map.put("a", "123");
request.setAttribute("map", map);
显示代码 ${map.a}--------${map["a"]}(两种方式)
总结:基本使用时,两种方法是一样的
区别
- 但是,要是属性名为一些特殊的字符,只有[]的方式才能使用 例如 :${map["."]}
- []里面可以是list集合的下标 ${list[0]}---------${list[0]}第一种不能之间点下标的方式,要将下标放入[]中
- String name="tom";
map.put("name", "tom is a boy");
像是这种键是动态的,用第一种方式,怎么样都不可能实现的,第二种方式,属性名称是可变的属性,例如,用[]的方式显示
小脚本区
String name="tom";
request.setAttribute("name",
name);
map.put(name,
"tom is a boy");
request.setAttribute("map", map);
H5页面显示区
${map[name]}
利用这种方式,可以做到属性名称是一个可变的属性
EL表达式{}里面也可以放一些简单的运算${1+2} 3 ${1<2} true
EL隐式对象总结:作用域访问对象:pageScope,requestScope,sessionScope,applicationScope
参数访问对象:param,paramValues 例如:
${param.uname} ${paramValues.like[0]}
JSP隐式对象:pageContext
小脚本区
Cookie c=new Cookie("c1","123");
response.addCookie(c);
显示 ${cookie.c1.value}
4817

被折叠的 条评论
为什么被折叠?



