表达式语言

表达式语言(Expression Language ,EL)

使用EL表达式可以轻松地访问page(pageContext)  、 request  、 session  和  application 中的属性内容。

EL表达式的使用方法: ${属性名称}

使用表达式语言最大的特点就是取到的参数或者对象的属性为空时,会自动使用空字符串("")

<%
		request.setAttribute("info","Hello EL");
	 %>
	 <h1>${info}</h1>
	 <h2>${name}</h2>
	 <h1><%=request.getAttribute("info") %></h1>
	 <h2><%=request.getAttribute("name") %></h2>


EL 提供“.“和“[ ]“两种运算符来存取数据,如果参数中含有特殊符号,如- ? 等等 则需要用[],如只能这样写${user["My-Name"]},

而不能这样${ user. My-Name}。其次如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:${sessionScope.user[data]}中

data 是一个变量

表达式语言的11种内置对象

表达式语言主要功能是进行内容的显示,为了方便的显示,表达式语言提供了下列内置对象pageContext 、pageScope 、 requestScope 、 sessionScope 、 
applicationScope  、 parm 、 parmValues 、 header 、 headerValues 、 cookie 、 initParm 

调用内置对象的操作:

pageContext调用内置对象

EL表达式种的pageContext隐藏对象,表示javax.servlet.jsp.PageContext对象。
使用pageContext对象可以取得request 、 session 、 application 的实例,所以在表达式语言中,可以通过pageContext这个表达式内置对象调用JSP内置对象中提供的方法。
如下例(根据表达式语言重的pageContext对象,获取jsp的request 、 session内置对象,并调用他们的方法。使用反射机制):
 IP地址:${pageContext.request.remoteAddr} <br>
	 SESSION ID: ${pageContext.session.id}<br>
	 是否是新session: ${pageContext.session.new}<br>


接收请求参数

使用param接收参数:   ${param.info}   等价于 <%=request.getParameter("info") %>
使用paramValues接收参数组:   
<form action="param_values_demo.jsp" method="post">
		兴趣:	<input type="checkbox" name="inst" value="吃饭">吃饭
				<input type="checkbox" name="inst" value="睡觉">睡觉
				<input type="checkbox" name="inst" value="看书">看书
				<input type="checkbox" name="inst" value="打游戏">打游戏
				<input type="submit" value="显示">
	</form>
<%request.setCharacterEncoding("UTF-8"); %>
	 兴趣: ${paramValues.inst[0]}、${paramValues.inst[1]}、${paramValues.inst[2]}、${paramValues.inst[3]}


访问4种属性范围内容

取出某一属性时,如果没有给出属性范围的话,将按page    -->   request   -->   session  -->   application  顺序查找
<%
		request.setAttribute("info","request属性范围");
		pageContext.setAttribute("info","page属性范围");
		application.setAttribute("info","application属性范围");
		session.setAttribute("info","session属性范围");
	 %>
	 <h3>${info}</h3>
	 <h3>${sessionScope.info}</h3>


想指定某范围内属性的话,用下列写法:${pageScope.attr}  、  ${requestScope.attr}  、${sessionScope.attr}  、${applicationScope.attr}

集合操作

可以方便的使用表达式语言输出Collection(List  Set)、Map集合中的内容,如下面例子:
<%
		List list = new ArrayList();
		list.add("张三");
		list.add("李四");
		list.add("王五");
		request.setAttribute("list",list);
		Map map = new HashMap();
		map.put("info1","msg[\"info1\"]能取到值");
		map.put("info2","${msg[info2]}忘了加双引号,取不到值");
		map.put("info3","msg.info3能取到值");
		request.setAttribute("msg",map);
	 %>
	 ${list[0]}<br>
	 ${list[1]}<br>
	 ${list[2]}<br>
	 ${msg }<br>
	 info1: ${msg["info1"]}<br>
	 info2:${msg[info2]}<br>
	 info3:${msg.info3}<br>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值