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

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

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

    Java世界

    學(xué)習(xí)筆記

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    天籟村

    新華網(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提供 . 和 [ ] 兩種運(yùn)算符來存取數(shù)據(jù),[ ]可以訪問集合或者是數(shù)組的元素、Bean的屬性。
    下列兩者所代表的意思是一樣的,但是需要保證要取得對象的那個(gè)的屬性有相應(yīng)的setXxx()和getXxx()方法才行。

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

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

    EL函數(shù)
    EL中使用函數(shù)要寫一個(gè)要使用到方法的類,然后在配置xxx.tld文件,然后在JSP中使用時(shí)和JSP的自定義標(biāo)簽相似。
    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ù)時(shí),都必須為公開靜態(tài)(public static)

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

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

    EL的隱含對象
    對象??????????????????????? 類 型????????????????? 說 明
    PageContext????? | javax.servlet.ServletContext |表示此JSP的PageContext
    ———————————————————————————–
    PageScope??????? | java.util.Map?? |取得Page范圍的屬性名稱所對應(yīng)的值
    ————————————————————————————-
    RequestScope???? | java.util.Map???????? |取得Request范圍的屬性名稱所對應(yīng)的值
    ————————————————————————————-
    sessionScope???? | java.util.Map???????? |取得Session范圍的屬性名稱所對應(yīng)的值
    ————————————————————————————-
    applicationScope | java.util.Map???????? |取得Application范圍的屬稱所對應(yīng)的值
    ————————————————————————————-
    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是一個(gè)小小的文本文件,它是以key、value的方式將Session Tracking的內(nèi)容記錄在這個(gè)文本文件內(nèi),
    這個(gè)文本文件通常存在于瀏覽器的暫存區(qū)內(nèi)。JSTL并沒有提供設(shè)定cookie的動(dòng)作,
    因?yàn)檫@個(gè)動(dòng)作通常都是后端開發(fā)者必須去做的事情,而不是交給前端的開發(fā)者。如果我們在cookie中設(shè)定一個(gè)名
    稱為userCountry的值,那么可以使用${cookie.userCountry}來取得它。
    header和headerValues(請求報(bào)頭對象)
    header儲(chǔ)存用戶瀏覽器和服務(wù)端用來溝通的數(shù)據(jù),當(dāng)用戶要求服務(wù)端的網(wǎng)頁時(shí),會(huì)送出一個(gè)記載要求信息的標(biāo)頭文件,
    例如:用戶瀏覽器的版本、用戶計(jì)算機(jī)所設(shè)定的區(qū)域等其他相關(guān)數(shù)據(jù)。如果要取得用戶瀏覽器的版本,
    即${header["User-Agent"]}。另外在很少機(jī)會(huì)下,有可能同一標(biāo)頭名稱擁有不同的值,此時(shí)必須改為使用headerValues來取得這些值。
    注意:因?yàn)閁ser-Agent中包含“-”這個(gè)特殊字符,所以必須使用“[]”,而不能寫成${header.User-Agent}。

    initParam
    就像其他屬性一樣,我們可以自行設(shè)定web應(yīng)用的環(huán)境參數(shù)(Context),當(dāng)我們想取得這些參數(shù)時(shí),
    可以使用initParam隱含對象去取得它,例如:當(dāng)我們在web.xml中設(shè)定如下:
    <?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)用戶要求或頁面的詳細(xì)信息。下面列出了幾個(gè)比較常用的部分。
    Expression??????????????????????????????? 說 明
    ${pageContext.request}????????????????? |取得請求對象
    ${pageContext.session}????????????????? |取得session對象
    ${pageContext.request.queryString}????? |取得請求的參數(shù)字符串
    ${pageContext.request.requestURL}?????? |取得請求的URL,但不包括請求之參數(shù)字符串
    ${pageContext.request.contextPath}????? |服務(wù)的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}|取得主機(jī)端的服務(wù)信息

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


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩免费一级毛片| 可以免费看的卡一卡二| 亚洲精品第一国产综合精品99| 亚洲国产系列一区二区三区| 国产91色综合久久免费分享| 在线电影你懂的亚洲| 日韩精品内射视频免费观看| 亚洲AV乱码一区二区三区林ゆな| 中文字幕免费人成乱码中国| 国产综合精品久久亚洲| 免费无码av片在线观看| 亚洲欧洲日产国码久在线观看 | 亚洲国产精品免费视频| 野花香高清视频在线观看免费 | 久久久久亚洲AV成人网人人网站| 一个人看的hd免费视频| 亚洲国产精品无码中文字| 日韩免费无码一区二区三区| 亚洲精品国产成人中文| 国产成人A在线观看视频免费| 亚洲一区二区三区在线观看网站| 日韩免费视频在线观看| 久久国产精品免费一区| 亚洲一区二区中文| 黄页网站免费观看| 成人久久久观看免费毛片| 久久亚洲精品中文字幕无码| 丁香花免费高清视频完整版| 精品亚洲福利一区二区| 亚洲乱码精品久久久久..| 无码国产精品一区二区免费虚拟VR| 一本色道久久综合亚洲精品蜜桃冫 | 亚洲人成人无码网www电影首页| 久久久久久久久久国产精品免费| 亚洲日产2021三区| 免费乱码中文字幕网站| 久久成人免费播放网站| 亚洲国产av玩弄放荡人妇| 亚洲精品无码永久中文字幕| aa级一级天堂片免费观看| 成年免费a级毛片免费看无码|