javaWeb之表达式语言---初始EL

1,何为表达式语言(Expression Language,EL)?

    EL是JSP 2.0中新增的功能,使用EL可以方便的访问标志位(JSP中一共有page[pageContext],request,session和application4种标志位)中的属性内容,这样可以减少页面中的脚本代码;

2,EL的格式:${属性名称}

   使用表达式语言可以方便地访问对象中的属性,提交的参数或者是进行数学运算,当内容为空时,则会自动输出空字符串("")表示;

看一个最简单的例子:

没有El之前我们应该这么写:

	<%
		request.setAttribute("name","keith");
		if(request.getAttribute("name")!= null){
	 %>
	 
	 <%=request.getAttribute("name")%>
	 
	 <%} %>

 有了EL,我们这么写:

	<%
		request.setAttribute("name","keith");
	 %>
	 ${name }

 这样页面会简介很多,维护也很方便;

3,表达式语言(EL)的内置对象:

EL的主要功能就是进行内容的显示,为了显示方便,在EL中提供了很多内置对象,通过对不同内置对象的设置,EL可以输出不同的内容,这些内置对象如下:

NoEL内置对象说明
1pageContext表示javax.servlet.jsp.PageContext对象
2pageScope表示从page属性范围查找输出属性
3requestScope表示从request属性范围查找输出属性
4sessionScope表示从session属性范围查找输出属性
5applicationScope表示从application属性范围查找输出属性
6param接收传递到本页面的参数
7paramValues接收传递到本页面的一组参数
8header取得一个头信息数据
9headerValues取得一组头信息数据
10cookie取出cookie中的数据
11initParam取得配置的初始化参数

4,访问4中属性范围的内容:

EL语言可以输出4中属性范围中的内容,如果此时在不同的属性范围中设置了同一个属性名称,则按照:page-->request-->session-->application顺序查找:

	<%
	pageContext.setAttribute("info","page 属性范围");
	request.setAttribute("info","request 属性范围");
	session.setAttribute("info","session 属性范围");
	application.setAttribute("info","application 属性范围");		
	 %>
	 
	 ${info }

输出的是:page 属性范围

这时可以指定一个要取出范围的属性,范围一共有4种标记:

No属性范围范例说明
1pageScope${pageScope.属性}取出page范围的属性内容
2requestScope${requestScope.属性}取出requestScope范围的属性内容
3sessionScope${sessionScope.属性}取出sessionScope范围的属性内容
4applicationScope${applicationScope.属性}取出applicationScope范围的属性内容

则上面的例子可以这么写:

	<%
	pageContext.setAttribute("info","page 属性范围");
	request.setAttribute("info","request 属性范围");
	session.setAttribute("info","session 属性范围");
	application.setAttribute("info","application 属性范围");		
	 %>
	 
	page 属性范围: ${pageContext.info }
	request 属性范围: ${requestScope.info }
	session 属性范围: ${sessionScope.info }
	application 属性范围: ${applicationScope.info }

 5,调用内置对象操作:

   在JSP内置对象里,可以使用pageContext()取得request,session,application的实例,在EL中可以通过pageContext这个表达式的内置对象调用JSP内置对象中提供的方法(调用方法是通过反射机制完成的);

	IP地址:${pageContext.request.remoteAddr }<br />
	session ID:${pageContext.session.id }<br />
	是否新的session:${pageContext.session.new }

 6,接收请求参数:

   使用EL还可以显示接收的请求参数,功能与request.getParameter()类似,语法:接收参数:${param.参数名称} ;

页面:

	通过内置对象接收输入参数:<%=request.getParameter("info") %>
	通过EL语言接收输入参数:${param.info }

 在浏览器上输入:http://localhost:8080/jsp/elTest.jsp?info='keith'

下面传入一组参数,语法:接收参数:${paramValues.参数名称} ;

 

	<form action="paramValuesDemo.jsp" method="post">
		爱好:<input type="checkbox" name="inst" value="唱歌">唱歌
		    <input type="checkbox" name="inst" value="游泳">游泳
		    <input type="checkbox" name="inst" value="看书">看书
		    <input type="submit" value="显示">
	</form>

 paramValuesDemo.jsp:(上面接收的一组参数,如果想要取出,则需要分别指定下标;

	<%request.setCharacterEncoding("UTF-8");%>
	第一个参数:${paramValues.inst[0] }<br />
	第二个参数:${paramValues.inst[1] }<br />
	第三个参数:${paramValues.inst[2] }<br />

 7,集合操作:

   在EL语言中已经很好地支持了集合的操作,可以方便的使用EL输出Collection(子接口:List,Set),Map集合中的内容。

看下List集合:

	<%
	//实例化List接口
	List all = new ArrayList();
	//向集合中增加内容
	all.add("keith");
	all.add("学习JAVA!");
	//向request集合中保存
	request.setAttribute("allInfo",all);
	 %>
	 
	 第一个元素:${allInfo[0] }
	 第二个元素:${allInfo[1] }
	 第三个元素:${allInfo[2] }

 看下Map集合:

	<%
	Map map = new HashMap();
	map.put("name","keith");
	map.put("age","21");
	request.setAttribute("info",map);
	 %>
	 Name:${info["name"] }
	 Name:${info["age"] }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值