小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

El表達(dá)式去作用域的值和用法

 ProgramCat 2015-09-13

${page.userName}


${request.userName}


${session.userName}


${application.userName}

 

 

Xml代碼  收藏代碼
  1. 使用el的時(shí)候,默認(rèn)會(huì)以一定順序搜索四個(gè)作用域,將最先找到的變量值顯示出來(lái)。  
  2.   
  3. 如果我們有${username}這樣一個(gè)正則表達(dá)式,它回去依次調(diào)用pageContext.getAttribute("username") -> request.getAttribute("username") -> session.getAttribute("username") -> application.getAttribute("username"),只要找到某一個(gè)不為空的值就立刻返回。  
  4.   
  5. 這樣的確方便我們的操作,但是隨之也出現(xiàn)了另外一個(gè)問(wèn)題,如果pageContext和request中有同名變量,但是我想取得request中的變量該如何是好呢?這就需要為el表達(dá)式引入作用域的概念了。  
  6. ${pageScope.username} ${requestScope.username}  
  7.   
  8. 我們可以直接訪(fǎng)問(wèn)13-04這個(gè)應(yīng)用,看看el表達(dá)式支持的所有對(duì)象。  
  9.   
  10. 下面我們分別對(duì)每個(gè)作用域?qū)ο筮M(jìn)行講解。  
  11.   
  12. 表 13.1. el中的作用域  
  13.       
  14. pageContext(1)  當(dāng)前頁(yè)的pageContext對(duì)象  
  15. pageScope   把page作用域中的數(shù)據(jù)映射為一個(gè)map對(duì)象  
  16. requestScope(2)     把request作用域中的數(shù)據(jù)映射為一個(gè)map對(duì)象  
  17. sessionScope    把session作用域中的數(shù)據(jù)映射為一個(gè)map對(duì)象  
  18. applicationScope    把a(bǔ)pplication作用域中的數(shù)據(jù)映射為一個(gè)map對(duì)象  
  19. param   對(duì)應(yīng)request.getParameter()  
  20. paramValues(3)  對(duì)應(yīng)request.getParameterValues()  
  21. header(4)   對(duì)應(yīng)request.getHeader()  
  22. headerValues    對(duì)應(yīng)request.getHeaderValues()  
  23. cookie(5)   對(duì)應(yīng)request.getCookies()  
  24. initParam(6)    對(duì)應(yīng)ServletContext.getInitParamter()  
  25.   
  26. (1)  
  27.       
  28.   
  29. 例子中的${pageContext.request.contextPath}返回的是request.getContextPath()的值,在此例中就是/13-04,我們經(jīng)常使用這個(gè)來(lái)拼接jsp中的絕對(duì)路徑。  
  30.   
  31. 這里的${pageContext.request.contextPath}是一種特殊用法,不能使用${request.contextPath}的形式替代。  
  32.   
  33. (2)  
  34.       
  35.   
  36. pageScope, requestScope, sessionScope, appliationScope都可以看作是Map型變量,調(diào)用其中的數(shù)據(jù)可以使用${pageScope.name}或${pageScope["name"]}的形式,這兩種寫(xiě)法是等價(jià)的。  
  37.   
  38. 在某些情況下只能使用${pageScope["content-type"]},這里不能寫(xiě)成${pageScope.content-type},jsp無(wú)法解析連字符(-)會(huì)出現(xiàn)錯(cuò)誤。  
  39.   
  40. (3)  
  41.       
  42.   
  43. 需要注意的是${paramValues.name}得到的是一個(gè)字符串?dāng)?shù)組,如果需要獲得其中某個(gè)值,還需要使用${paramValues.name[0]}指定數(shù)組中的索引。  
  44.   
  45. 這與下面的${headerValues.name}是相似的。  
  46.   
  47. (4)  
  48.       
  49.   
  50. ${header.name}會(huì)取得http請(qǐng)求中的header參數(shù),現(xiàn)實(shí)工作中很少用到這里的數(shù)據(jù)。  
  51.   
  52. 例子中使用Host是指請(qǐng)求訪(fǎng)問(wèn)的主機(jī)地址,包括ip和端口號(hào)。而Referer比較有趣,如果用戶(hù)通過(guò)超鏈接跳轉(zhuǎn)過(guò)來(lái)的,Referer會(huì)保存上次訪(fǎng)問(wèn)頁(yè)面的地址,我們就可以通過(guò)它來(lái)統(tǒng)計(jì)哪些用戶(hù)是從哪里轉(zhuǎn)來(lái)的了。  
  53.   
  54. (5)  
  55.       
  56.   
  57. ${cookie.name}將獲得對(duì)應(yīng)cookie的對(duì)象,比如我們用jsp將一段cookie發(fā)送給客戶(hù)端。  
  58. Cookie cookie = new Cookie("username", "Username in cookie"); response.addCookie(cookie);  
  59.   
  60. 創(chuàng)建一個(gè)名稱(chēng)為username,值為"Username in cookie"的Cookie對(duì)象,然后發(fā)送給客戶(hù)端。  
  61.   
  62. 然后我們就可以使用${cookie.username}獲得這個(gè)cookie了,${cookie.username.name}獲得cookie名稱(chēng),${cookie.username.value}獲得cookie值。  
  63.   
  64. (6)  
  65.       
  66.   
  67. ServletContext.getInitParamter()指的應(yīng)用的初始變量,這些變量都是定義在web.xml中的。  
  68. <context-param> <param-name>username</param-name> <param-value>username with context param</param-value> </context-param>  
  69.   
  70. ${initParam.username}就會(huì)得到這里的變量值。  
  71.   
  72. 以上都是死記硬背的東西,建議實(shí)際用到的時(shí)候翻看一下就好了,演示代碼都放在13-04下,為了獲得param和cookie還要點(diǎn)擊一下最下邊的連接才可以。  
  73. 運(yùn)算符  
  74.   
  75. el表達(dá)式中支持java中所有的操作符,并且還有一些擴(kuò)展,下面我們簡(jiǎn)要做一下對(duì)照。  
  76.   
  77. 表 13.2. 加減乘除四則運(yùn)算  
  78.       
  79. +   加  
  80. -   減  
  81. *   乘  
  82. /或div   除  
  83. %或mod   求余  
  84.   
  85. 表 13.3. 比較運(yùn)算  
  86.       
  87. ==或eq   相等(equals)  
  88. !=或ne   不相等(not equals)  
  89. <或lt     小于(less than)  
  90. >或gt     大于(greater than)  
  91. <=或le    小于等于(less than or equals)  
  92. >=或ge    大于等于(greater than or equals)  
  93.   
  94. 表 13.4. 邏輯運(yùn)算  
  95.       
  96. &&或and  邏輯和  
  97. ||或or   邏輯或  
  98. !或not   取反  
  99.   
  100. 表 13.5. 特殊運(yùn)算  
  101.       
  102. empty   是否為null或空字符串  
  103.  :     三元運(yùn)算符  
     

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多