如何使用EL表达式?

来源:互联网 发布:生物多样性数据库 编辑:程序博客网 时间:2024/05/29 03:04

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中的名称pagepageScope,例如${pageScope.username} request requestScopesessionsessionScopeapplicationapplicationScope表达式前要是没有范围修饰是,默认按照从最小的范围开始寻找,page-request-session-application
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}