1. 程式人生 > >EL表示式常見用法詳解

EL表示式常見用法詳解

1.EL表示式的簡介

EL表示式是一種JSP技術,能夠代替JSP中原本要用Java語言進行顯示的語句,使得程式碼更容易編寫與維護。最基本的語法是${express}。

2.獲取並顯示資料

1)從四個域中通過key找到簡單資料並顯示出來。表示式程式碼:

${name}      <!-- 類比於<%=pageContext.findAttribute("name") %> -->
四個域的尋找順序是 page,request,session,application。用EL表示式還有個好處,若找不到鍵值為name的屬性值,不會顯示null,會顯示空字串。若是確定鍵值是在request域中,則可以用如下EL表示式程式碼:
${requestScope.name}
2)從儲存在WEB域中的封裝了資料的JavaBean中得到物件的某個屬性值並顯示出來。
<%
	Person p = new Person();
	Address address = new Address();
	address.setCity("浙江");//Adress類中有個私有String屬性為city
	p.setName("mike");//Person類中有私有String屬性為name
	p.setAddress(address);//Person類中有私有Adress屬性為address
	session.setAttribute("person", p);//存入sessionScope
%>
${person.name}<!-- 從WEB域中找到鍵值為person的物件,然後再person物件中找到name屬性 -->
${person.address.city}
${person['name']}<!-- 也可以用[]方式 -->
${person['address']['city']}
除了用.方式獲得物件的屬性,也可以用[ ]方式,當然遇到鍵值名字中有-的,如mike-abc,或者key值為數字開頭,則只能用[ ]方式。

3)從List集合物件中獲取某個值並顯示。

<%
	List<Person> list = new ArrayList<Person>();
	list.add(new Person("kkk"));
	list.add(new Person("sss"));
	list.add(new Person("jjj"));
	application.setAttribute("list_1", list);
%>
${list_1[1].name }

4)從Map中獲取某個值並顯示。
<%
	Map map = new HashMap();
	map.put("a", new Person("aaa"));
	map.put("b", new Person("bbb"));
	map.put("1", new Person("ccc"));
	request.setAttribute("map", map);
%>
${map['1'].name }<!-- 是數字的話只能用括號,就算put進去的key值是字串型別-->
${map.a.name }

3.執行運算

1)語法:${運算表示式}

2)常見運算子:==(eq)   !=(ne)    <(lt)    >(gt)    <=(le)    >=(ge)    &&(and)   ||(or)   !(not)

3)判斷是否為空:${empty name }

4)三目運算子:${name == null?"null":name }

4.獲取常用物件

1)語法:${隱式物件名稱}

2)隱式物件表

物件名 用法 等價JSP程式碼或作用
param ${param.name} request.getParameter(name)
paramValues ${paramValues.name} request.getParameterValues(name)//返回一個字串陣列
header ${header.name} request.getHeader(name)
headerValues ${headerValues.name} request.getHeaderValues(name)
cookie ${cookie.name.value} request.getCookie()
initParam ${initParam.name} ServletContext.getInitparameter(name)
pageContext ${pageContext.request.contextPath} 獲取WEB應用名
pageContext ${pageContext.request.sessionid} 獲取sessionId
pageContext ${pageContext.request.remoteAddr} 獲取主機名

5.EL表示式原理及注意點

原理:EL表示式在獲取某個物件的屬性值時,先將某個屬性值首字母變成大寫,然後加上get字首,拼接成getter方法,通過反射將該物件構建出來,然後再對該物件執行getter方法,這與私有屬性並沒有關係,所以要注意,JavaBean的屬性名要小寫,且要有getter方法,不然會報錯。