<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關系運算符有以下六個運算符
    關系運算符????? 說 明??????????????? 范 例???????????? 結(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關系運算符時,不能夠?qū)懗桑?br />${param.password1} = = ${param.password2}
    或者
    ${ ${param.password1 } = = ${ param.password2 } }
    而應寫成
    ${ param.password1 = = param.password2 }
    使用EL從表單中取得數(shù)據(jù)
    與輸入有關的隱含對象有兩個: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ū)域等其他相關數(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}來取得其他有關用戶要求或頁面的詳細信息。下面列出了幾個比較常用的部分。
    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 閱讀(4140) 評論(0)  編輯  收藏


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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲成aⅴ人片久青草影院按摩| 亚洲福利视频网址| 美女羞羞免费视频网站| 免费羞羞视频网站| 亚洲第一成年免费网站| 国产网站免费观看| 国产成人久久精品亚洲小说| 男人天堂免费视频| 亚洲精品无码专区久久久| a在线观看免费网址大全| 久久久久久久久亚洲| 91久久青青草原线免费| 亚洲伊人久久大香线焦| 最近免费中文字幕大全| 亚洲aⅴ无码专区在线观看 | jizz免费在线观看| 亚洲色成人中文字幕网站| 久草免费福利视频| 亚洲日韩乱码中文无码蜜桃| 97无码免费人妻超级碰碰夜夜| 亚洲va在线va天堂成人| 伊人久久亚洲综合影院| 99麻豆久久久国产精品免费| 亚洲网站在线观看| 成全影视免费观看大全二| 夜夜爽妓女8888视频免费观看| 亚洲熟妇无码AV在线播放| 日本中文字幕免费高清视频| 亚洲一区二区三区精品视频| 日韩午夜免费视频| 今天免费中文字幕视频| 亚洲高清有码中文字| 亚洲人成无码www久久久| 无码免费一区二区三区免费播放| 亚洲日本国产综合高清| 久久精品亚洲乱码伦伦中文| 亚洲高清视频免费| 曰韩无码AV片免费播放不卡| 亚洲欧洲日产国码www| 亚洲成人一区二区| 久草视频免费在线观看|