EL表达式

旧巷老猫 提交于 2019-12-08 20:54:26

  1作用:简化jsp文件上java代码开发步骤

      例如在jsp上使用java,将域对象中的数据读取到响应体:

<% 
String value=(String)request.getAttribute("key");
//out.write(value)
%>
<%=value %>

      但是这个步骤要使用多次,对项目组的开发影响很大,因此采用了封装技术:EL表达式

      使用EL表达式:

${requestScope.key}

 

 

          只需要一行,因此极大程度的提高了自己的效率

  2.EL是一个java开发工具包,用于从域对象中读取数据并写入到响应体

  3.语法格式:路径格式类似于jquery中的选择器和过滤器语法

  4.不需要导包

  5标注格式${域对象别名.关键字}

      域对象名:

            (1)application:全局作用域对象

            (2)session:会话作用域对象

            (3)request:请求作用域对象

            (4)pageContext:当前页作用域对象

                作用:1.用来初始化jsp内置对象 2.保存标签工具类的结果

              作用范围由上到下减小。

     域对象别名

            jsp                                                                                    EL

            (1)application                applicationScope

            (2)session                 sessionScope

            (3)request                  requestScope

            (4)pageContext                pageScope

 

将存放高级对象属性写到响应体中

${域对象别名.关键字.属性名}

EL表达式使用反射机制,通过调用当前属性的get方法读取属性内容,因此需要有每个属性的get方法

 

 

  6.EL表达式简化版:可以省略域对象的别名即:${关键字}

    工作原理:没有指定域对象,先去当前作用域中定位,如果有读取输出并结束执行,如果没有则去request中,以此递归,其先会去范围小的域对象中读取,如果作用域最大的application也没有找到,则会不报错,而显示null

    弊端:

     1增加运行时间 

      例子:加入存放在session中,则先要去pageScope,再去requestScope,最后才到sessionScope中找到,因此会增加运行时间

     2导致定位错误,如果两个作用域中都有,则你要显示作用域大的,这是不行的,如果小的里面也有,则只会显示作用域小的,因此会导致定位错误。

    适用场景:专门为pageContext读取数据并写入响应体。原因:不增加运行时间,也不会导致定位错误。

  7.EL表达式支持的运算:

    (1)数学运算:+、-、*、/

    (2)关系运算:<、>、=、>= 、<= 、==

    (3)逻辑运算:与、或、非

  8.EL表达式其他内置对象:

      1.param

          【使用】:${param.请求参数名}

          【作用】:读取请求协议包参数内容

          【代替】:

            String value=request.getParameter("请求参数名");

                                          out.write(value);

      2.paramValues

          【使用】:${paramValues.请求参数名}

          【作用】:读取请求协议包中关联多个值得请求参数,将内容保存到数组中

          【代替】:String array[] =request.getParameterValues("请求参数名");

      3.initParam

          【使用】:${initParam.共享数据名}

          【作用】:将全局对象中来自配置文件的数据写入响应体中

          【代替】:

                String value=application.getInitParameter("driver");

                out.write(value);

      4.

 

  9.EL表达式缺陷:

       1.只能从域对象中读取数据,不能向域对象中写入数据。

      2.不支持控制语句。

    

 

 

 

 

4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!