首页 > 代码库 > java web进阶篇(三) 表达式语言

java web进阶篇(三) 表达式语言

表达式语言(Expression Language ,EL)是jsp2.0中新增的功能。可以避免出现许多的Scriptlet代码

格式: ${ 属性名称 },  使用表达式语言可以方便的访问对象中的属性,提交的参数或者进行各种数学运算,而且使用表达式语言最大的特点是如果输出的内容是null,则会自动使用空字符串("")表示。

<%request.setAttribute("name", "info");%>

<h1>${name}</h1>


表达式语言的主要功能就是进行内容的显示,为了显示的方便,在表达式语言中提供了许多内置对象,通过对不同内置对象的设置,表达式语言可以输出不同的内容。内置的对象如下:

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

但是如果我们要访问特定范围内的属性可以这样:   ${ sessionScope.info}   ,同理request范围的使用  requestScope.info。


接收请求参数,功能与request.getParameter()类似,格式是:  ${param.参数名称}

接收一组数据是,例如checkbox的值,我们可以用  ${ paramValues.inst[0]}  inst指的是checkbox的name属性。


下面我们卡一下集合操作,在表达式语言中已经很好的支持了集合的操作,可以方式使用表达式语言输出Collcetion(子接口 :list  set)、map集合中的内容。

例如<% List all=new ArrayList();         all.add("lingli");  all.add("aaa@qq.com");  request.setAttribute("allinfo",all);%>

输出:${allinfo[0]}     ${allinfo[1]}   

map集合操作<%Map map=new HashMap();  map.put("lxh","lingxinghua"); map.put("age","40"); request.setAttribute("mapinfo",map);%>

输出:${mapinfo["lxh"]}           ${mapinfo["age"]} 


接着我们看在MVC中应用表达式

在一个java对象中我们假设定义了name,age ,address等属性,当然我们设置了set和get方法。

我们在通过实例化对象,并且应有set方法进行赋值了之后,我们通过request.setAttribute("people",  peo)把实例化对象传入进去,那么我们怎么用EL表达式来输出里面的值呢。

其实我们这样就可以输出  ${people.name}   ${people.age}    ${people.address}直接就可以输出里面的值。



如果我们把java对象的people加到一个List集合中,

List<People> all=new  ArrayList<People>();

People people=new People();

people.setName=("fzy");

people.setAge=(20);

people.setAddress("ShanDong");

all.add(people);

request.setAttribute("alllist",all);

request.getRequestDispatcher("next.jsp").forward(request,response);

接着我们在next.jsp页面中

<%

 List  all=(List)request.getAttribute("alllist");

Iteratro it=all.iterator();

%>

<%

while(it.hasNext()){

pageContext.setAttribute("people",iter.next);

%>

${people.name}

${people.age}

${people.address}


<%

}

%>

这样我们就实现了输出。