el表达式解析原理
EL表达式:1.expressionlanguage表达式语言
2.要简化jsp中java代码开发。
3.它不是一种开发语言,是jsp中获取数据的一种规范
EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。
el表达式工作原理是什么
一、为什么使用EL表达式
代码量小,并且不需要使用尖括号;
支持从pageContext,request,session,application中取值,它会自动检查四个作用域,不需要特别指定;
如果变量不存在,会输出空字符串"",而不是null,省去了手工判断的工作。
不需要导入jar包。
不需要强制转换类型
二、EL表达式的语法格式三、El表达式的使用:1.El表达式获取请求数据(1)获取用户请求数据(请求实体)。${param.键名}获取请求实体中一个键一个值的数据。${paramValues.键名}获取请求实体中同键不同值的数据,返回的是String数组,可以使用角标直接获。(2)获取请求头数据${header}返回所有的请求头数据,键值对形式。${header["键名"]}返回指定的键的请求头数据。${headerValues["键名"]}获取请求头中同键不同值的数据。(3)获取Cookie数据${cookie}获取所有的Cookie对象键值对${cookie.Cookie对象的键名}获取存储了指定Cookie数据的Cookie对象${cookie.Cookie对象的键名.name}获取存储了指定Cookie数据的Cookie对象的存储的键${cookie.Cookie对象的键名.value}获取存储了指定Cookie数据的Cookie对象的存储的值2.EL表达式获取作用域数据(1)作用域对象共有四个,从小到大排列:pageContextrequestsessionapplication。分别对应当前页面、当前请求、当前会话、当前应用程序。(2)获取作用域内的数据:1)普通字符串数据${键名}2)对象数据${键名.属性名}3)集合数据list集合${键名[角标]}Map集合${map集合作用域存储的键名.map集合存储的数据的键名}(3)作用域数据查找顺序:如果找到了则不再查找,如果找不到,则继续查找下一个作用域,如果四个作用域中都没有则什么都不显示pageContext-->request-->session-->application指定作用域获取数据:${pageScope.键名}指明获取pageContext作用域中的数据${requestScope.键名}指明获取request作用域中的数据${sessionScope.键名}指明获取session作用域中的数据${applicationScope.键名}指明获取application作用域中的数据3.EL表达式逻辑运算算术运算:+,-,*,/在EL表达式中可以直接进行算术运算格式:${算术表达式}例如:${1+2}注意:+表示算术运算,不能进行字符串连接逻辑运算:&&||!格式:${逻辑表达式}注意:没有单&和单|比较运算:==!=>,>=,<,<=格式:${比较表达式}三目运算:格式:${条件?值:值}4.EL表达式的empty判断格式:${empty键名}作用:判断该键是否有存储有效数据,是否为空,返回boolean类型。el表达式的功能有哪些
EL表达式主要用于替换jsp页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。(某个web域中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
在jsp页面里有这样的代码:
里面的el表达式${data}最终会被翻译成pageContext.findAttribute("data");,在找的过程中先从page域,然后是request域,再是session域,终是application域,找不到返回null,