1.EL的顶级对象:
Scope:pageScope,requestScope,sessionScope,applicationScope.
parameter:param,paramValues.
head:header,headerValues.
cookies.
initParam
pageContext,上面的都是映射,只有pageContext是实际的指向,其它的隐式对象多事MAP。
2.运算符:
算术运算符,+ - */(div),%(mod).
关系运算符,==(eg),!=(ne),<(lt),>(gt),<=(le)>=(ge).
逻辑运算符,&&(and),||(or),!(not)
验证运算符,empty,是空的意思,ex.参数的值不能为空
[]用于取数据,数组/list/map/bean属性访问操作符。这个玩意好像是更好的.点号。person.name等于person["name"]
3.表达式的格式,放在一个大括号里面去,前面加上万能的钱,如${}
4.内置对象的读取:
(1)四个范围,requestScope.xxx,相当于request.getAttribute("xxxx"),这个实际上只是一个map。sessionScope.xxx,pageScope.xxx,applicationScope.xxx.
(2)param.xxx获取参数,相当于request.getParameterValues()获取数组。
(3)cookie.xxx,相当于request.getCookies()返回的是个数组。cookie是默认创建的,如果不想创建page命令中cookie=false。写入cookie
Cookie cookie = new Cookie("username","whatIsJsp");
cookie.setMaxAge(60);
response.addCookie(cookie);
(4)header.xxx 不太常用的,但是分析HTTP协议的时候比较好用。
(5)headValues.xxx 获取request,session,application,out;${abc},相当于pageContext.find("abc")
5.POJO对象的获取:${pageScope.fool.name}<br/> ${fool.bar.desc}
6.数组对象的获取:放对象,
int[] arry={1,2,3,4,5};
reqeust.setAttribute(“arry1’,arry);
取对象${requestScope.arry1[0]} ${arry[1]}
7.MAP对象的获取:访对象,
Map map=new Hashmap();
map.put(“one’,”123’);
map.put(“two”,”234”);
取对象: ${sessionScope.map1.one} ${map1.two} ${map1['two']},这种写法是可以理解的,但是放在java在中,这个方法感觉上不太好理解。
8.学习EL表达式。
9.自己你扩展EL表达式:
(1)编写一个公共静态方法的Java类,这个方法必须是静态的,而且必须是公共的 ,这样才能被调用。
(2)编写一个标记库描述文件DTD,TLD文件的作用是建立java函数与调用的JSP之间的一个映射。函数的名字是可以不相同的,可以为自己的java函数起一个名字。
(3)在JSP中放置一个taglib指令,jsp中会告诉容器,让容器为这个jsp提供该前缀下的一耳光TAGLIB。
(4)使用EL调用你已经写好的函数,按照${prefis:name()}的形式去调用你的函数就可以了。
扩展一个得到MIN_VALUE-MAX_VALUE随机数的EL表达式
10.缺陷以及解决:如何进行条件循环。JSP标准标记库提供了条件或者循环。结合JSTL以及EL表达式就可以处理绝大多数的前端的逻辑了。