EL表达式语言1

EL表达式语言1

EL 全名为Expression Language。EL主要作用:
1.获取数据
  •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
2.执行运算
  •利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
3.获取web开发常用对象
  •EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
4.调用Java方法
  •EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
 
一、获取数据-普通变量/JavaBean/List/Set/Map
  
  使用EL表达式获取数据语法:${标识符}
  EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,
找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)
  示例:${user}
EL表达式也可以很轻松获取JavaBean的属性,或获取数组CollectionMap类型集合的数据,例如:
•${user.address.city}
•${user.likes[0]}:访问有序集合某个位置的元素
•${map['key']}  : 获得map集合中指定key的值
  
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
  
   	<%-- 1.普通变量--%>
	<c:set var="username" value="小胜" scope="page" />
	用户名:${username}<br/>
   	<hr />
   	<%-- 2.JavaBean --%>
   	<jsp:useBean id="user" class="cn.zengfansheng.el.User" scope="page" />
   	<c:set target="${user }" property="username" value="hacket"/>
   	<c:set target="${user }" property="password" value="123456"/>
   	用户名:${user.username}<br/>
  	密码:${user.password}
  	<hr />
  	<!-- 3.List,Set  -->
  	<%
		List<String> list = new ArrayList<String>();
		list.add("one");
		list.add("two");
		list.add("three");
		request.setAttribute("LIST",list);
	%>
	集合中第一个元素:${LIST[0]}
	集合中第二个元素:${LIST[1]}
	<hr />
	<!-- 4.Map  -->
	<jsp:useBean id="map" class="java.util.LinkedHashMap" scope="page"/>
	<c:set target="${map}" property="key" value="1"/>
	<c:set target="${map}" property="value" value="hacket"/>
	Map的key:${map.key }
	Map的value:${map.value }
	<hr />
	<!-- 5.数组 -->
	<%
		int[] intArray = {10,20,30};
		pageContext.setAttribute("intArray",intArray);
	%>
	数组中的第二个元素为:${intArray[1]}
	<hr/>
	找不到时,返回:${map}
  </body>
</html>

二、执行计算

语法:${运算表达式}EL表达式支持如下运算符:
  
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
	10+3=${10+3}<br/>
	10-3=${10-3}<br/>
	10*3=${10*3}<br/>
	10/3=${10/3}<br/>
	<hr/>
	10>3=${10>3}<br/>
	10>=3=${10>=3}<br/>
	10<3=${10<=3}<br/>
	10<=3=${10<=3}<br/>
	10==3=${10==3}<br/>
	10!=3=${10!=3}<br/>
	<hr/>
	true&&false=${true && false}<br/>
	true&&true=${true && true}<br/>
	false&&false=${false && false}<br/>
	<hr/>
	true||false=${true || false}<br/>
	true||true=${true || true}<br/>
	false||false=${false || false}<br/>
	<hr/>
	!false=${!false}<br/>
	!true=${!true}<br/>
	<hr/>
	<c:set var="username" value="杰克" scope="session"/>
	<c:remove var="username" scope="session"/>
	<%--
		session.invalidate();
	--%>	
	欢迎${!empty username?username:'游客'}光临
	
	Web应用名:<%=request.getContextPath()%>
	<hr/>
	Web应用名:${pageContext.request.contextPath}
	<form action="/day17"></form>
  </body>
</html>

三、获取web常用对象-el中11个隐式对象

EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。
语法:${隐式对象名称}  :获得对象的引用
 
 
 pageContext:
获取Web应用名:${pageContext.request.contextPath}

pageScope/requestScope/sessionScope/applicationScope

        <c:set var="username" value="hacket" scope="page" />
        <c:set var="username" value="xiaosheng" scope="request" />
	默认:${username}<br/>
	page:${pageScope.username }<br/>
	request:${requestScope.username }<br/> 

param/paramValues(数组)

    <a href="${pageContext.request.contextPath}/result.jsp?name=berry&pass=123&like=sing&like=dance&like=read">
   	 单击
     </a>    

result.jsp

        用户名:${param.name}<br/>
  	密码:${param.pass}<br/>
  	${paramValues.like}<br/>
  	爱好A:${paramValues.like[0]}<br/>
  	爱好B:${paramValues.like[1]}<br/>
  	爱好C:${paramValues.like[2]}<br/>    

initParam--原本的ServletContext

   <!-- Web初始化参数 -->
	<context-param>
		<param-name>webName</param-name>
		<param-value>day17</param-value>
	</context-param>  
	<context-param>
		<param-name>webAuthor</param-name>
		<param-value>赵君</param-value>
	</context-param>  
WebName:${initParam.WebName }<br/>
WebAuthor:${initParam.WebAuthor }<br/>

header,headerValues(数组)

浏览器相关信息:${header["User-Agent"]}<br/>
字符编码:${headerValues['Accept-Encoding'][0]}

cookie

    <%
  		Cookie cookie = new Cookie("username","hacket");
  		cookie.setMaxAge(5*60);
  		response.addCookie(cookie);
  	%>
  	Cookie的名:${cookie.username.name }<br/>
  	Cookie的值:${cookie.username.value }<br/>
注意事项
•测试headerValues时,如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
•测试cookie时,例${cookie.key}取的是cookie对象,如访问cookie的名称和值,须${cookie.username.name}或${cookie.username.value}
•new Cookie(“username”,”jack”);

 

posted @ 2013-04-13 13:39  hacket520  阅读(285)  评论(0)    收藏  举报