EL表达式

一:EL表达式
1.命令格式:${作用域对象别名.共享数据}
2.命令作用:
1)EL表达式是EL工具包提供的一种特殊的命令格式【表达式命令格式】
2)EL表达式在JSP文件上使用
3)负责在JSP文件上从作用域对象中读取指定的共享数据并输出到响应体中

二: EL表达式作用域对象别名
1.JSP文件可以使用的作用域对象
1)ServletContext application:全局作用域对象
2)HttpSession session: 会话作用域对象
3)HttpServletRequest request: 请求作用域对象
4)PageContext pageContext: 当前页作用域对象,这是jsp文件里独有的作用域对象在Servlet中
是不存在的.在当前页作用域对象中所存放的共享数据,仅能在当前的jsp文件中使用,不能共享给其他Servlet或者其他JSP文件。真实开发中,主要用于JSTL标签与JSP文件之间数据共享。

 2.EL表达式提供作用域对象别名	
            JSP                          EL表达式

            application                ${applicationScope.共享数据名}
		
 			session                    ${sessonScope.共享数据名}
			
			request                    ${requestScope.共享数据名}

            pageContext                ${pageScope.共享数据名}		

三:EL表达式将引用对象属性写入到响应体
1.命名格式:${作用域对象别名.共享数据名.属性名}

 2.命令作用:从作用域对象读取指定共享数据关联的引用对象的属性值。
             并自动降属性的结果写入到形影提
			 
 3.属性名:  一定要和引用类型属性名完全一致(大小写)	
 
 4.EL表达式没有提供遍历集合方法,因此无法从作用域对象读取集合内容输出

四:EL表达式简化版
1.命令格式:${共享数据名}

 2.命令作用:EL表达式允许开发人员开发时,省略作用域对象别名
 
 3.工作原理:
             EL表达式简化版由于没有指定作用域对象,所以在执行时采用猜的算法
			 首先到【pageContext】定位共享数据,如果存在直接读取输出并结束执行
			 如果在【pageContext】没有定位成功,到【reques】定位共享数据,如果存在直接读取输出并结束执行
			 如果在【request】没有定位成功,到【session】定位共享数据,如果存在直接读取输出并结束执行
			 如果在【session】没有定位成功,到【application】定位共享数据,如果存在直接读取输出并结束执行
			 如果在【application】没有定位成功,返回null
			 pageContext--->request--->session--->application--->null
			 
 4.存在隐患:
             1):容易降低程序执行速度【南辕北辙】
			 2):容易导致数据定位错误
			 
 5.应用场景:
             设计目的,就是简化从pageContext读取共享数据并输出的难度
			 
 6.EL表达式简化版尽管存在了很多隐患,但是在实际开发过程中,开发人员为了节省时间
   一般都使用简化版,拒绝使用标准版

五:EL表达式-----支持的运算表达式
1.前提:在jsp文件中有时需要将读取的共享数据进行一番运算之后,将运算的结果写入到响应体中

 2.支持的运算表达式:
            1):数学运算
			2):关系运算: >    =    ==   <    <=   != 
			             gt   ge   eq   lt   le   !=
			3):逻辑运算(与或非):&& || !

六:EL表达式提供的内置对象
1.命令格式:${param.请求参数名称}

 2.命令作用: 通过请求对象读取当前请求包中请求参数内容,并将请求参数内容发写到响应体
 
 3.代替命令:index.jsp
               发送请求时: http://localhost:8080/myWeb/index.jsp?userName=mike&password=123
			   <%
			   String userName = request.getParameter("userName");
			   String password = request.getParameter("password");
			   %>
			   <%=userName%>
			   <%=password%>
			   
 1.命令格式:${paramValues.请求参数名[下标]}
 
 2.命令作用:如果浏览器发送的请求参数是一个请求参数关联多个值
             此时可以通过paramValues读取请求参数下指定位置的值,并写入到响应体

 3.代替命令:http://localhost:8080/myWeb/index_2.jsp?pageNo=1&pageNo=2&pageNo=3
             此时pageNo请求参数在请求包以数组形式存在
			 pageNo:[1,2,3]
			 <%
			 String array[]=request.getParameterValues("pageNo");
			 %>
			 第一个值:<%array[0]%>
			 第二个值:<%array[1]%>

EL表达式常见异常PropertyNotFoundException:在对象中没有找到指定的属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值