㈠ jsp中EL標簽怎樣使用
個人學習筆記.非抄
El表達式的使用:
1、什麼是EL表達式:
是一套簡單的計算規則,用來給jsp標簽的屬性賦值。現在,
新的規范當中,也允許el表達式的結果直接輸出
訪問bean(java對象,有相應屬性及get/set方法)的屬性
①:
${user.name}:容器會一次從pageContext,request,sessionapplication中
查找綁定名稱為」user」的對象,如果找到了,不再向下查找
如果找到了,會調用該對象的getName方法
如果沒有找到,會輸出」 」空字元串.
注意:屬性名不能寫錯
跟直接寫java代碼訪問bean的屬性相比,
使用el表達式的優點是:會將null轉換成""輸出,
另外,找不到某個對象,會輸出""。
②獲取請求參數
${param.username} param為關鍵字
相當於request.getParameter(「username」);
${paramValues.city}
相當於request.getParameterValues(「city」);
③將計算結果輸出,或者給jsp標簽的屬性復制
El表達式可以進行一些簡單的計算
a、算數運算 + - * / %
「+」 不能夠進行字元串的連接運算,會報錯
b、關系運算 > >= < <= != ==
c、邏輯運算 && || !
d、empty運算 :判斷一個字元串是否是一個字元串
或者一個集合是否為一個空的集合
如果要指定查找范圍,可以使用
pageScope, requestScope,sessionScope,applicationScope。
比如:${requestScope.user.name}
EL表達式翻譯為Java代碼的含義:
${foo.name}翻譯為Java代碼是out.println(foo.getName());
意味著調用foo的getName()方法,而非訪問foo的成員變數name
EL表達式把數據從四個范圍(pageContext、request、session、application)中取出來顯示或者計算
EL表達式解決了Java代碼和HTML的不匹配問題
EL表達式用字元串表達式替換Java代碼,用來表示對數據的獲取或計算
㈡ jsp中使用el獲取request中的值的問題
jsp中使用el獲取request的值:
在jsp中獲取request中的參數值就要使用下面的代碼:
${requestScope.attr} 或者${attr}
1--EL表達式用${}表示,可用在所有的HTML和JSP標簽中作用是代替JSP頁面中復雜的JAVA代碼.
2--EL表達式可操作常量 變數 和隱式對象. 最常用的 隱式對象有${param}和${paramValues}.
${param}表示返回請求參數中單個字元串的值. ${paramValues}表示返回請求參數的一組
值.pageScope表示頁面范圍的變數.requestScope表示請求對象的變數. sessionScope表示會話
范圍內的變數.applicationScope表示應用范圍的變數.
3 --<%@ page isELIgnored="true"%> 表示是否禁用EL語言,TRUE表示禁止.FALSE表示不禁
止.JSP2.0中默認的啟用EL語言.
㈢ jsp標簽中的 "${表達式}"表示什麼
jsp標簽中的 ${表達式}用來輸出或者計算一個表達式的內容,比如${3+5},那麼便會在頁面上輸出8,在比如${sessionScope.username},那麼便會獲取Session裡面的username的值,它不能在代碼塊也就是<% %>里使用。
作用:EL(Expression Language)是為了使JSP寫起來更加簡單。表達式語言的靈感來自於 ECMAScript 和 XPath 表達式語言,它提供了在 JSP 中簡化表達式的方法,讓Jsp的代碼更加簡化。
(3)jspelrequest擴展閱讀
jsp中${}是EL表達式的常規表示方式
目的是為了獲取{}中指定的對象(參數、對象等)的值
如:
${user.name}<====>User user = (User)request(搜尋范圍).getAttribute(user);
String name = user.getName();
out.println(name);
從當前頁面起開始搜尋 user對象,然後獲取改對象的name屬性值
其搜尋的范圍依次是:page、request、session、application
如果未搜索到,即會返回null值
它在jsp+servlet的編程中經常使用,如果是剛學EL表達式,建議熟練掌握。
㈣ jsp EL表達式取值過程,page和pagecontext的區別
1、EL表達式解析過程
JSP中,我們經常會寫為${obj.name}字樣,但你有沒有想過,它的取值過程是什麼,屬性值從哪取得?
${obj}相當於 request.getAttribute("obj"),這句話嚴格來說不嚴謹,依次的請求范圍是page、request、session、application
也就是說,如果在page.getAttribute()找不到,再去request.getAttribute,如果request找不到,再去session里找,session里找不到,再去application里
page.getAttribute-------->request.getAttribute------------>session.getAttribute----------->applicaton.getAttribute
2、page和pagecontext的區別
page就是當前jsp頁面,也等同於jsp編譯後的servlet,查看java代碼可以得知,page是java.lang.Object類型
publicvoid_jspService(finaljavax.servlet.http.HttpServletRequestrequest,finaljavax.servlet.http.HttpServletResponseresponse)
throwsjava.io.IOException,javax.servlet.ServletException{
finaljavax.servlet.jsp.PageContextpageContext;
javax.servlet.http.HttpSessionsession=null;
finaljavax.servlet.ServletContextapplication;
finaljavax.servlet.ServletConfigconfig;
javax.servlet.jsp.JspWriterout=null;
finaljava.lang.Objectpage=this;
javax.servlet.jsp.JspWriter_jspx_out=null;
javax.servlet.jsp.PageContext_jspx_page_context=null;response.setContentType("text/html;charset=UTF-8");
pageContext=_jspxFactory.getPageContext(this,request,response,
null,true,8192,true);
_jspx_page_context=pageContext;
application=pageContext.getServletContext();
config=pageContext.getServletConfig();
session=pageContext.getSession();
out=pageContext.getOut();
_jspx_out=out;
}
來個具體的例子吧。
page1.jsp,設置鍵值對
<%
page.setAttribute("name","obma")
%>
在page1.jsp,可以取出上邊設置的name值,但是在其它頁面(page2,page3中....)獲取到的都是null
<%
Stringvalue=(String)page.getAttribute("name");
%>
pagecontext,是page的上下文,是javax.servlet.jsp.PageContext類型,它持有request,response,也持有page,通過pagecontext可以獲取servletcontext、servletconfig等,可以看出他是一個橋梁可以獲取上下文變數
㈤ 在jsp頁面寫的EL表達式,提示錯誤
EL表達式的寫法要遵循特定語法的,否則會報錯。
JSP EL簡介
1、語法結構
${expression}
2、[ ]與.運算符
EL 提供「.「和「[ ]「兩種運算符來存取數據。
當要存取的屬性名稱中包含一些特殊字元,如.或?等並非字母或數字的符號,就一定要使用「[ ]「。例如:
${user.My-Name}應當改為${user["My-Name"] }
如果要動態取值時,就可以用「[ ]「來做,而「.「無法做到動態取值。例如:
${sessionScope.user[data]}中data 是一個變數
3、變數
EL存取變數數據的方法很簡單,例如:${username}。它的意思是取出某一范圍中名稱為username的變數。
因為我們並沒有指定哪一個范圍的username,所以它會依序從Page、Request、Session、Application范圍查找。
假如途中找到username,就直接回傳,不再繼續找下去,但是假如全部的范圍都沒有找到時,就回傳null。
屬性范圍在EL中的名稱
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope