一、EL和JSTL的地位
在JSP中使用腳本元素的主要需求:
1. 為JSP執行提供流程控制;
2. 設置JSP頁面的局部變量,并在以后訪問;
3. 提供復雜表達式(往往涉及Java對象)的值;
4. 訪問對象的性質;
5. 調用JavaBean或其他Java對象的方法;
但是如今已經不提倡在JSP中使用腳本元素:
1. 如果使用Java代碼,開發人員就可能用到整個API,這樣就會很容易創建出不可移植的代碼,而對某種機器或系統存在依賴性;
2. 由于能通過Java語言訪問系統元素,可能會在Jsp中混入應用業務邏輯,這就會“污染”應用的表示層;
3. 嵌入到Jsp中的Java代碼很難閱讀和調試,因此很難維護;
引入EL和JSTL可以寫出完全不含腳本的程序,前兩項要求由JSTL處理,后三項由EL處理
二、EL簡介
1. EL命名變量:附屬到JSP作用域對象上的屬性。${屬性名}

2. EL表達式的使用
a) 內聯放置在模板數據中;
b) 放在JSP動作的屬性中;
3. “ . ” 和 “ [ ] “ 操作符訪問對象的性質
4. EL表達式中可用的操作符
a) 算術操作符 :+、-、*或$、/或div、%或mod
b) 邏輯操作符 :&&或and、||或or、!或not
c) 比較操作符 :==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
i. EL進行比較時,總是會“合理地”轉換所比較的數據類型。
d) 其他 :Empty運算符、條件運算符、()運算符
i. Empty測試條件
5. EL隱式對象
a) JSP隱式對象
i. pageContext
${pageContext.request.queryString} 取得請求的參數字符串
${pageContext.request.requestURL} 取得請求的URL,但不包括請求之 參數字符串
${pageContext.request.contextPath} 服務的web application 的名稱
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的協議(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用戶名稱
${pageContext.request.remoteAddr } 取得用戶的IP 地址
${pageContext.session.new} 判斷session 是否為新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主機端的服務信息
b) 作用域訪問隱式對象
i. pageScope
ii. requestScope
iii. sessionScope
iv. applicationScope
c) 參數訪問隱式對象
i. param
ii. paramValues
d) 首部訪問隱式對象
i. header
${header["User-Agent"]} 獲得瀏覽器版本
ii. headerValues
iii. cookie
e) 初始化參數訪問隱式對象
i. InitParam
6. EL函數
