EL表达式

EL表达式

一、使用EL表达式获取数据语法:

      1.基本语法:“${标识符}”,示例:${user}

      2.其它语法1:${sessionScope.varName},从指定的容器中读取

     3. 其它语法2:${2*200+80},可以执行算术、逻辑运算

 

二、原理:

EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键

字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相

应对象,找不到则返回”” (注意,不是null,而是空字符串)。

 

三、作用:

  1.读取容器中的属性变量

<%
		pageContext.setAttribute("nameP", "JackP");
		request.setAttribute("nameR", "JackR");
		session.setAttribute("nameS", "JackS");
		application.setAttribute("nameA", "JackA");
%>
         ${nameP},${nameR},${nameS},${nameA},,${applicationScope.nameA}
         ${abc},不存在则输出空字符串
	

  2.读取javaBean中的信息

<%
		User u = new User();
		u.setName("jack");
		u.setPwd("1234");
		u.setAge(23);
		pageContext.setAttribute("user", u); //注意,一定要把数据存入容器中,否则EL表达式无法读取出数据
	%>

	${user}, ${user.name}, ${user.pwd},${user.age}

3.读取Map中的信息

<%
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("name", "Bob");
		map.put("age", 25);

		map.put("u", u); //把复杂数据如JavaBean,List等作为一个对象存入map
		pageContext.setAttribute("mm", map);
	%>
	常用的读法: ${mm}, ${mm.age},${mm.name}
	<br> 不常用的读法:${mm['age']}, ${mm["name"] }
	<br> 复杂数据读取:${mm.u}, ${mm.u.name}, ${mm.u.age}

  4.读取List中的信息

<%
		List<Object> list = new ArrayList<Object>();
		list.add("周末");
		list.add(100);
		list.add(u);
		list.add(map);
		request.setAttribute("list", list);
	%>
	${list}<br>
    ${list[0]},${list[1]},${list[2].name} <br>
    ${list[3].u.age} <br>
    
    <%
       map.put("list",list);
    %>
     ${mm.list[2]} <br>

5.执行运算

  5.1.可以使用算术运算符: +, - , * , / , % 等


	<jsp:useBean id="u" class="cn.hncu.domain.User">
	</jsp:useBean>
	<jsp:setProperty property="name" name="u" value="Alice" />
	<jsp:setProperty property="age" name="u" value="20" />

	<%
		pageContext.setAttribute("u", u);
	%>
	${u.age/2+20}

  5.2 可以使用比较运算符: ==, !=, <, >, <=, >= 以及逻辑运算符: &&,|| 等

 ${u.age>=25} , ${u.name=="Alice" && u.age!=18 }

  5.3可以使用"问号表达式"

${ u.age>=25 ? "old" : "young" } 

 5.4以后用得比较多的一个运算符: empty  功能:当属性为null或不存在时,返回true,否则返回false<br>

 ${empty u}, ${empty u.age}, ${empty map} ,Over! <br> 

 

6.读取它内部定义的11个隐藏对象:

    6.1:1个便于操作其它jsp隐藏对象的对象:pageContext 4个容器相关:pageScope,

requestScope, sessionScope, applicationScope

    6.2:6个其它:param, paramValues, header, headerValues, cookie,  initParam
 

 <%
        User u = new User();
        u.setName("Tom");
        u.setPwd("1234");
        u.setAge(83);
        pageContext.setAttribute("u", u);
        request.setAttribute("info", "weekend");
    %>

    6.3:pageContext 和 4个容器的演示

 ${pageContext.request.remoteAddr}
    ${pageScope.u},${requestScope.info},${applicationScope.info}

   6.4:2个请求参数相关隐藏对象的演示, 访问方式如下:

 //http://localhost:8080/elWeb/jsps/elDemo3.jsp? name=Jack&age=28
    ${param} ,${paramValues}
    {param.name},${paramValues.name[0]}

   6.5:2个HTTP请求头相关隐藏对象的演示

${header}   ${headerValues}  
   ${header.host},&nbsp;&nbsp; ${header.accept}
   ${headerValues.host[0]},&nbsp;&nbsp; ${headerValues.accept[0]}<br>
 ${header.cookie},  
 <!--下面的方式是无法获取session的id值的,
  因为header.cookie中把所有cookie信息封装成一个完整字符串。
  如果要获取session-cookie的id值,就自己用底层方式从该字符串中解析出来。
  当然el中给我们提供了一个隐藏对象cookie,通过它可以方便地获取session的id值
   ${header.cookie.JSESSIONID}-->

   6.6:1个专用于获取cookie信息的隐藏对象演示

   ${cookie.JSESSIONID}, ${cookie.JSESSIONID.value}

  6.7:1个页面初始化参数信息获取的隐藏对象initParam,演示时需要在web.xml中配置,这里略过了,一般很少用

 ${initParam.name}

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值