EL表示式常見用法詳解
阿新 • • 發佈:2019-01-01
1.EL表示式的簡介
EL表示式是一種JSP技術,能夠代替JSP中原本要用Java語言進行顯示的語句,使得程式碼更容易編寫與維護。最基本的語法是${express}。
2.獲取並顯示資料
1)從四個域中通過key找到簡單資料並顯示出來。表示式程式碼:
${name} <!-- 類比於<%=pageContext.findAttribute("name") %> -->
四個域的尋找順序是 page,request,session,application。用EL表示式還有個好處,若找不到鍵值為name的屬性值,不會顯示null,會顯示空字串。若是確定鍵值是在request域中,則可以用如下EL表示式程式碼:2)從儲存在WEB域中的封裝了資料的JavaBean中得到物件的某個屬性值並顯示出來。${requestScope.name}
<% 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方法,不然會報錯。