【JavaWeb篇】EL表达式知识点总结

目录

为什么会有EL表达式?

什么是EL表达式?

EL表达式的作用?

EL表达式的四大域对象 

EL表达式从域中取对象底层是如何实现的?

如果我们没有向域中存数据,还要取数据,结果会是什么?

EL表达式的语法格式?

 引入一个面试题:

EL表达式的运算符?


为什么会有EL表达式?

在没有学习EL表达式之前,我们会将java代码写到JSP文件中的JSP语法中,这样会让JSP中夹杂着各种java代码,例如<% java代码 %>、<%=%>等,导致JSP文件很混乱,不好看,这样虽然可以但是给人感觉很蠢,违背了简介的原则,很乱如果有大量代码之后会很难在后期维护;

抱着简洁JSP中的java代码的初衷,所以才有了后期的EL表达式。

什么是EL表达式?

     EL表达式,全称是Expression Language。意为表达式语言。它是Servlet规范中的一部分,是JSP2.0规范加入的内容。其作用是用于在JSP页面中获取数据,从而让我们的JSP脱离java代码块和JSP表达式。

EL表达式的作用?

EL表达式的作用主要有三点:

1,从域中取数据;

2,将数据转换为字符串;

                如果是一个java对象,也会自动调用java对象的toString方法将其转换成字符串。3,将数据输出到浏览器页面;

               和这个一样:<%= %>,将其输出到浏览器。

EL表达式的四大域对象 

  • pageContext
  • request
  • session
  • application
  • 四大域对象范围比较,pageContext < request < session < application
  • EL表达式中有四个隐含的隐式的范围:

    • pageScope 对应的是 pageContext范围。

    • requestScope 对应的是 request范围。

    • sessionScope 对应的是 session范围。

    • applicationScope 对应的是 application范围。

EL表达式从域中取对象底层是如何实现的?

EL表达式从域中取数据优先从小的域中取数据,小的域中如果没有就会去更大的域中去取数据,次序依次是:PageContext-->session-->request-->Application;

举例说明:

<!--使用JSP向域中存数据-->
<%request.setAttribute("username","zhangsan");%>
<%request.setAttribute("username","李四");%>
<!--使用EL表达式从request域中取出数据-->
${username}

页面显示:李四

为什么,没有zhangsan呢?,你可以这样理解你在向域中存数据是是存到域中的一个内置map集合中了,map集合中key是唯一的,如果加入相同的key,会覆盖上一次的values;如果想要存只能创建不同的key;

如果我们没有向域中存数据,还要取数据,结果会是什么?

<%request.setAttribute("null",null);%>
${location}
${null}

 页面显示:空白

为什么会是这样呢?因为EL表达式对null值作了特殊处理;如果是null,则向浏览器输出一个空字符串。

EL表达式的语法格式?

EL表达式的语法格式很简单,如下:

${Java代码}

案例:比如我们在JSP页面,从request域中取出数据;

<!--使用JSP向域中存数据-->
<%request.setAttribute("username","zhangsan");%>
<!--使用EL表达式从request域中取出数据-->
${username}

 引入一个面试题:

面试题:
    ${abc} 和 ${"abc"}的区别是什么?
        ${abc}表示从某个域中取出数据,并且被取的这个数据的name是"abc",之前一定有这样的代码: 域.setAttribute("abc", 对象);
        ${"abc"} 表示直接将"abc"当做普通字符串输出到浏览器。不会从某个域中取数据了。

EL表达式的运算符?

EL表达式中的运算符值得注意只有empty和not,其余都和Java的运算符使用方法一致;

运算符 作用
empty

1、判断对象是否为null

2、判断字符串是否为空字符串

3、判断容器元素是否为0

条件 ?表达式1 : 表达式2 三元运算符
not 取反

猜你喜欢

转载自blog.csdn.net/m0_64231944/article/details/129397974