<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java世界

    學習筆記

    常用鏈接

    統(tǒng)計

    積分與排名

    天籟村

    新華網(wǎng)

    雅虎

    最新評論

    Jsp EL語法(轉(zhuǎn))

    例:
    ${sessionScope.user.sex}
    所有EL都是以 ${ 為起始、以} 為結(jié)尾的。
    上述EL范例的意思是:從Session取得用戶的性別。如果使用之前JSP代碼的寫法如下:
    <%
    User user = (User)session.getAttribute(”user”);
    String sex = user.getSex( );
    %>

    兩者相比較之下,可以發(fā)現(xiàn)EL的語法比傳統(tǒng)JSP代碼更為方便、簡潔。
    EL提供 . 和 [ ] 兩種運算符來存取數(shù)據(jù),[ ]可以訪問集合或者是數(shù)組的元素、Bean的屬性。
    下列兩者所代表的意思是一樣的,但是需要保證要取得對象的那個的屬性有相應的setXxx()和getXxx()方法才行。

    例:
    ${sessionScope.user.sex}
    等于 ${sessionScope.user["sex"]}
    . 和 [ ] 也可以同時混合使用,如下:
    ${sessionScope.shoppingCart[0].price}
    返回結(jié)果為shoppingCart中第一項物品的價格。
    在EL中,字符串既可以使用”abc”,可以使用’abc’。

    EL運算符
    EL的算術(shù)運算符和Java中的運算符的大致相同,優(yōu)先級也相同。
    注意:’+’ 運算符不會連接字符串了,他只用于加法運算。
    EL關(guān)系運算符有以下六個運算符
    關(guān)系運算符????? 說 明??????????????? 范 例???????????? 結(jié)果
    = = 或 eq?? |??? 等于?? |${ 5 = = 5 } 或 ${ 5 eq 5 } | true
    != 或 ne??? |?? 不等于 |${ 5 != 5 } 或 ${ 5 ne 5 } | false
    < 或 lt???? |?? 小于??? |${ 3 < 5 }或 ${ 3 lt 5 }??? | true
    > 或 gt???? |?? 大于??? |${ 3 > 5 }或 ${ 3 gt 5 }??? | false
    <= 或 le??? | 小于等于 |${ 3 <= 5 }或 ${ 3 le 5 }?? | true
    >= 或 ge??? | 大于等于 |${ 3 >= 5 }或 ${ 3 ge 5 }?? | false
    empty運算符
    Empty運算符主要用來判斷值是否為null或空的,例如:
    ${ empty param.name }
    接下來說明Empty運算符的規(guī)則:
    {empty} A
    如果A為null時,返回true
    如果A不存在時,返回true
    如果A為空字符串時,返回true
    如果A為空數(shù)組時,返回true
    如果A為空的Map時,返回true
    如果A為空的Collection時,返回true
    否則,返回false
    注意:
    在使用EL關(guān)系運算符時,不能夠?qū)懗桑?br />${param.password1} = = ${param.password2}
    或者
    ${ ${param.password1 } = = ${ param.password2 } }
    而應寫成
    ${ param.password1 = = param.password2 }
    使用EL從表單中取得數(shù)據(jù)
    與輸入有關(guān)的隱含對象有兩個:param和paramValues,它們是EL中比較特別的隱含對象。
    一般而言,我們在取得用戶的請求參數(shù)時,可以利用下列方法:
    request.getParameter(String name)
    request.getParameterValues(String name)
    在EL中則可以使用param和paramValues兩者來取得數(shù)據(jù)。
    ${param.name}
    ${paramValues.name}可以取得所有同名參數(shù)的值
    ${paramValues.hobbies[0]}可以通過指定下標來訪問特定的參數(shù)的值
    這里param的功能和request.getParameter(String name)相同,
    而paramValues和request.getParameterValues(String name)相同。
    如果用戶填了一個form,form名稱有為username的文本框,則我們就可以使
    用${param.username}來取得用戶填入文本框的值。

    EL函數(shù)
    EL中使用函數(shù)要寫一個要使用到方法的類,然后在配置xxx.tld文件,然后在JSP中使用時和JSP的自定義標簽相似。
    xxx.tld中的配置
    <function>
    <name>reverse</name><!–函數(shù)名–>
    <function-class>jsp2.examples.el.Functions</function-class><!–函數(shù)所在的類–>
    <function-signature>java.lang.String reverse( java.lang.String )</function-signature>
    <!–函數(shù)原型,也就是函數(shù)的返回值類型,函數(shù)名,參數(shù)表,注意一定要寫類型的全名–>
    </function>

    使用EL函數(shù)的寫法
    ${sn:upper(’abc’)}
    注意:在定義EL函數(shù)時,都必須為公開靜態(tài)(public static)

    EL的隱含對象
    EL也可以使用內(nèi)置對象中設置的屬性,需要使用特定的EL內(nèi)置對象
    屬性范圍???? |??? 在EL中的對象
    Page???????? |???? pageScope
    Request????? |???? requestScope
    Session????? |???? sessionScope
    Application |???? applicationScope

    EL中使用內(nèi)置對象的屬性
    ${requestScope.user}
    等價于
    <%request.getAttribute(”user”)%>
    如果不寫出特定的范圍 ,那就會在不同的范圍間進行搜索了
    例:{user}(user是在request范圍 request.setAttribute(”user”,user))
    也就等于
    ${requestScope.user}
    <%request.getAttribute(”user”)%>

    EL的隱含對象
    對象??????????????????????? 類 型????????????????? 說 明
    PageContext????? | javax.servlet.ServletContext |表示此JSP的PageContext
    ———————————————————————————–
    PageScope??????? | java.util.Map?? |取得Page范圍的屬性名稱所對應的值
    ————————————————————————————-
    RequestScope???? | java.util.Map???????? |取得Request范圍的屬性名稱所對應的值
    ————————————————————————————-
    sessionScope???? | java.util.Map???????? |取得Session范圍的屬性名稱所對應的值
    ————————————————————————————-
    applicationScope | java.util.Map???????? |取得Application范圍的屬稱所對應的值
    ————————————————————————————-
    param?????????? | java.util.Map |如同ServletRequest.getParameter(String name)返回String類型的值
    —————————————————————————————-
    paramValues?? | java.util.Map |如同ServletRequest.getParameterValues?? | (String name)。返回String []類型的值
    —————————————————————————————–
    header?????????? | java.util.Map?? |如同ServletRequest.getHeader(String name) 返回String類型的值
    ——————————————————————————————
    headerValues???? |??? java.util.Map |如同ServletRequest.getHeaders(String name) 。返回String []類型的值
    ——————————————————————————————
    cookie?? |???? java.util.Map???????? |如同HttpServletRequest.getCookies( )
    ——————————————————————————————
    initParam?? | java.util.Map |如同ServletContext.getInitParameter(String name)。返回String類型的值
    ——————————————————————————————-

    cookie對象
    所謂的cookie是一個小小的文本文件,它是以key、value的方式將Session Tracking的內(nèi)容記錄在這個文本文件內(nèi),
    這個文本文件通常存在于瀏覽器的暫存區(qū)內(nèi)。JSTL并沒有提供設定cookie的動作,
    因為這個動作通常都是后端開發(fā)者必須去做的事情,而不是交給前端的開發(fā)者。如果我們在cookie中設定一個名
    稱為userCountry的值,那么可以使用${cookie.userCountry}來取得它。
    header和headerValues(請求報頭對象)
    header儲存用戶瀏覽器和服務端用來溝通的數(shù)據(jù),當用戶要求服務端的網(wǎng)頁時,會送出一個記載要求信息的標頭文件,
    例如:用戶瀏覽器的版本、用戶計算機所設定的區(qū)域等其他相關(guān)數(shù)據(jù)。如果要取得用戶瀏覽器的版本,
    即${header["User-Agent"]}。另外在很少機會下,有可能同一標頭名稱擁有不同的值,此時必須改為使用headerValues來取得這些值。
    注意:因為User-Agent中包含“-”這個特殊字符,所以必須使用“[]”,而不能寫成${header.User-Agent}。

    initParam
    就像其他屬性一樣,我們可以自行設定web應用的環(huán)境參數(shù)(Context),當我們想取得這些參數(shù)時,
    可以使用initParam隱含對象去取得它,例如:當我們在web.xml中設定如下:
    <?xml version=”1.0″ encoding=”ISO-8859-1″?>
    <web-app 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/web-app_2_4.xsd”
    version=”2.4″>
    <context-param>
    <param-name>userid</param-name>
    <param-value>mike</param-value>
    </context-param>
    </web-app>
    那么我們就可以直接使用 ${initParam.userid}來取得名稱為userid,其值為mike的參數(shù)。
    下面是之前的做法:String userid = (String)application.getInitParameter(”userid”);

    pageContext對象
    我們可以使用 ${pageContext}來取得其他有關(guān)用戶要求或頁面的詳細信息。下面列出了幾個比較常用的部分。
    Expression??????????????????????????????? 說 明
    ${pageContext.request}????????????????? |取得請求對象
    ${pageContext.session}????????????????? |取得session對象
    ${pageContext.request.queryString}????? |取得請求的參數(shù)字符串
    ${pageContext.request.requestURL}?????? |取得請求的URL,但不包括請求之參數(shù)字符串
    ${pageContext.request.contextPath}????? |服務的web application的名稱
    ${pageContext.request.method}?????????? |取得HTTP的方法(GET、POST)
    ${pageContext.request.protocol}???????? |取得使用的協(xié)議(HTTP/1.1、HTTP/1.0)
    ${pageContext.request.remoteUser}?????? |取得用戶名稱
    ${pageContext.request.remoteAddr }????? |取得用戶的IP地址
    ${pageContext.session.new}????????????? |判斷session是否為新的,所謂新的session,表示剛由server產(chǎn)生而client尚未使用
    ${pageContext.session.id}?????????????? |取得session的ID
    ${pageContext.servletContext.serverInfo}|取得主機端的服務信息

    posted on 2010-01-22 21:26 Rabbit 閱讀(4137) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 成全视频免费观看在线看| 男女交性无遮挡免费视频| 污视频在线免费观看| 亚洲精品无码永久中文字幕| 国产免费区在线观看十分钟| 亚洲区不卡顿区在线观看| 国产成人无码精品久久久免费| 在线播放亚洲第一字幕| 两个人看的www免费视频| 亚洲av一综合av一区| 1000部夫妻午夜免费| 国产成人精品日本亚洲专区6| 妞干网在线免费观看| 亚洲国产精品ⅴa在线观看| 又大又硬又爽免费视频| 无遮挡a级毛片免费看| 久久久久久A亚洲欧洲AV冫| 中国videos性高清免费| 亚洲精品美女视频| 在线免费观看视频你懂的| 免费看一级毛片在线观看精品视频 | 国产精品极品美女免费观看| 色偷偷亚洲第一综合| 久久久久亚洲爆乳少妇无| 成人精品一区二区三区不卡免费看| 久久国产亚洲高清观看| 韩国免费三片在线视频| 一级女性全黄生活片免费看| 亚洲免费在线视频| 国产高清免费的视频| 成全视频免费观看在线看| 久久精品国产亚洲AV久| 亚洲精品97久久中文字幕无码| 一级毛片在线免费看| 亚洲日韩精品国产3区| 在线观看午夜亚洲一区| 国产精品美女午夜爽爽爽免费 | 国产人成网在线播放VA免费| 日木av无码专区亚洲av毛片| 韩国欧洲一级毛片免费| 久久综合给合久久国产免费 |