對象名 | 用法 | 等價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} | 獲取主機名 |
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 }
若變量a爲null,或長度爲零的String,或size爲零的集合則${empty a}返回結果爲true
${not empty a}或${!empty a}返回結果爲false
4)三目運算符:${name == null?"null":name }
4.獲取常用對象
1)語法:${隱式對象名稱}
2)隱式對象表
5.EL表達式原理及注意點
原理:EL表達式在獲取某個對象的屬性值時,先將某個屬性值首字母變成大寫,然後加上get前綴,拼接成getter方法,通過反射將該對象構建出來,然後再對該對象執行getter方法,這與私有屬性並沒有關係,所以要注意,JavaBean的屬性名要小寫,且要有getter方法,不然會報錯。
6.EL表達式總結
01.EL表達式用來替代JSP頁面中數據訪問時的複雜編碼
02.EL可以通過變量名取值、獲取對象的屬性值、獲取集合元素、執行表達式
03.EL飲食對象 有三種分別是作用域訪問對象、參數訪問對象、JSP隱式對象
EL表達式無法使用的解決方法
有時候我們在新建一個項目後,在JSP頁面內寫EL表達式,如:
${1 + 1}
結果就顯示“ ${1 + 1} ”,而不是顯示2,可能有兩種原因:
1.JSP頁面指令中禁用了EL表達式,將JSP頁面開頭加上如下指令:
<%@ page isELIgnored="false" %>
2.web.xml中的<web-app>中沒有指定JSP和Servlet的版本,將<web-app>標籤換成如下:
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.