久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Struts中OGNL與EL表達式

  1. <span style="font-size: large;"><span style="font-size: large;"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%@ taglib uri="/struts-tags" prefix="s" %>  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.   <head>  
  6.     <title>OGNL的使用</title>  
  7.   </head>  
  8.   <body>  
  9. <h3>OGNL的使用</h3><hr/>  
  10.  訪問Action中的普通屬性: <s:property value="loginname"/><br/>  
  11.  訪問Action中的對象屬性: <s:property value="user.birthday"/><br/>  
  12.  訪問Action中的Set屬性: <s:property value="courseSet.toArray()[0]"/><br/>  
  13.  訪問Action中的List屬性: <s:property value="list[0]"/><br/>  
  14.  訪問Action中的Map屬性的鍵: <s:property value="map.keys.toArray()[1]"/><br/>  
  15.  訪問Action中的Map屬性的值: <s:property value="map.values.toArray()[1]"/><br/>  
  16. 訪問Action中的Map屬性的指定鍵對應的值: <s:property value="map['z']"/><br/>   
  17. 訪問Action中的Map屬性的大小: <s:property value="map.size"/><br/>   
  18. <hr/>  
  19. 訪問ActionContext中的普通屬性:<s:property value="#inte"/><br/>  
  20. 訪問ActionContext中的對象屬性:<s:property value="#user2.loginname"/><br/>  
  21. <hr/>  
  22. 訪問Action中的普通方法:<s:property value="getAppName()"/><br/>  
  23. 訪問ActionContext中的某個對象上的普通方法:<s:property value="#user2.info()"/><br/>  
  24. <hr/>  
  25. 訪問靜態(tài)屬性:<s:property value="@java.lang.Math@PI"/><br/>  
  26. 訪問靜態(tài)方法:<s:property value="@java.lang.Math@floor(44.56)"/><br/>  
  27. 訪問Math類中的靜態(tài)方法:<s:property value="@@floor(44.56)"/><br/>  
  28. <hr/>  
  29. 調(diào)用java.util.Date的構造方法:<s:date name="new java.util.Date()" format="yyyy-MM-dd HH:mm:ss"/><br/>  
  30. 調(diào)用java.util.Date的構造方法創(chuàng)建對象,再調(diào)用它的方法:<s:property value="new java.util.Date().getTime()"/><br/>  
  31. <hr/>  
  32. 投影查詢:獲取userList中所有l(wèi)oginname的列表:<s:property value="userList.{loginname}"/><br/>  
  33. 選擇查詢:獲取userList中所有score大于60的loginname列表:<s:property value="userList.{?#this.score>60.0}.{loginname}"/><br/>  
  34. 選擇查詢:獲取userList中所有score大于60并且gender為true的loginname列表:<s:property value="userList.{?(#this.score>60.0 && #this.gender)}.{loginname}"/><br/>  
  35. 選擇查詢:獲取userList中所有score大于60并且gender為true的第一個元素的loginname:<s:property value="userList.{^(#this.score>60.0 && #this.gender)}.{loginname}"/><br/>  
  36. 選擇查詢:獲取userList中所有score大于60并且gender為true的最后一個元素的loginname:<s:property value="userList.{$(#this.score>60.0 && #this.gender)}.{loginname}"/><br/>  
  37. <hr/>  
  38. 訪問名為xxx的請求參數(shù)對應的第一個值:<s:property value="#parameters.xxx[0]"/><br/>  
  39. 訪問通過ActionContext中放入Request中的屬性:<s:property value="#request.reqAtt"/><br/>  
  40. 訪問通過ServletActionContext中放入Request中的屬性:<s:property value="#request.reqAtt2"/><br/>  
  41.   
  42. 訪問通過ActionContext中放入Session中的屬性:<s:property value="#session.sesAtt"/><br/>  
  43. 訪問通過ServletActionContext中放入Session中的屬性:<s:property value="#session.sesAtt2"/><br/>  
  44. 訪問通過ActionContext中放入ServletContext中的屬性:<s:property value="#application.appAtt"/><br/>  
  45. 訪問通過ServletActionContext中放入ServletContext中的屬性:<s:property value="#application.appAtt2"/><br/>  
  46.   
  47. 直接訪問屬性域中指定名稱的屬性對應的值:<s:property value="#attr.sesAtt2"/><br/>  
  48. <br/><br/><hr/>  
  49. <s:iterator value="userList" status="vs">  
  50.     <s:if test="%{#vs.odd}">  
  51.         <span style="color: red">  
  52.             <s:property value="#vs.count"/>: <s:property value="loginname"/>,<s:date name="birthday" format="yyyy-MM-dd HH:mm:ss"/><br/>  
  53.         </span>  
  54.     </s:if>  
  55.     <s:else>  
  56.         <span style="color: blue">  
  57.             <s:property value="#vs.count"/>: <s:property value="loginname"/>,<s:date name="birthday" format="yyyy-MM-dd HH:mm:ss"/><br/>  
  58.         </span>  
  59.     </s:else>  
  60. </s:iterator>  
  61.   
  62. <hr/><s:debug/>  
  63.   </body>  
  64. </html></span></span>  

 

總結(jié):

在上邊大家都好奇為什么都用struts的S標簽,,因為OGNL是通常要結(jié)合Struts 2的標志一起使用,,如<s:property value="xx" />


 Action類與JSP頁面之間的數(shù)據(jù)傳遞

 1) 通過HttpServletRequest,HttpSession,ServletContext來傳遞數(shù)據(jù)。

    a) Action中傳數(shù)據(jù):在Action類的請求處理方法中先獲取各個作用域?qū)ο?/span>

    ServletActionContext.getRequest();

    ServletActionContext.getRequest().getSession();

    ServletActionContext.getServletContext();

          然后調(diào)用相應的setAttribute(String "鍵", Object 值);

    b) 在JSP頁面中取數(shù)據(jù):可以使用EL表達式或代碼片段來取出對應作用域中屬性值,。

    c) 頁面中的請求參數(shù)傳遞到Action中時,,Action中直接定義對應名稱的屬性,并提供setter方法即可封裝此數(shù)據(jù),。

    

 2) 通過ActionContext實例來傳遞數(shù)據(jù),。 ActionContext針對每個正在執(zhí)行Action的線程中綁定一份。

   a) Action中通過ActionContext傳遞數(shù)據(jù),。

      ActionContext提供了put(String "鍵", Object 值);  //數(shù)據(jù)不會映射到HttpServletRequest中,。

      ActionContext提供的getSession().put(String "鍵", Object 值);  //數(shù)據(jù)會自動映射到HttpSession中。

      ActionContext提供的getApplication().put(String "鍵", Object 值); //數(shù)據(jù)會自動映射到ServletContext中。

   b) 在JSP頁面取數(shù)據(jù):struts2推薦使用OGNL來取ActionContext中的數(shù)據(jù),。



1. Struts2中的OGNL的使用,。


2. OGNL:對象圖導航語言。通過OGNL表達式可以獲取對象的屬性,,調(diào)用對象的方法,,或構造出對象。

  1) OGNL上下文中有一個根對象,。這個根對象可以直接獲取,。不需要#。

  2)支持常量:

         字符串常量,、字符常量,、

         數(shù)值常量:int、long,、float,、double

         布爾常量:true、false

    Null常量 : null

         支持操作符:支持Java的所有操作符,,還支持特有的操作符: ,,、 {}、in,、not in;


 Struts2中的OGNL:

  1) Struts2將ActionContext設置為OGNL上下文,,并將值棧(ValueStack)作為OGNL的根對象放置到ActionContext中。

  2) Struts2總是把當前Action實例放置在值棧的棧頂,。所以,,在OGNL中引用Action中的屬性也可以省略“#”。

  

 常用標簽

 1) <s:property value="OGNL"/>

 2) <s:date name="OGNL" format=""/>

 3) <s:if test="OGNL"></s:if><s:elseif test="OGNL"></s:elseif><s:else></s:else>

★4) <s:iterator value="OGNL" status="vs">...</s:iterator>

 5) <s:debug/>

 


struts2中#,、%和$這三個符號的使用方法【摘自max struts2教程】 

 

一,、"#"的用法 

   1、 訪問OGNL上下文和Action上下文,,#相當于ActionContext.getContext(),;下表有幾個ActionContext中有用的屬性: 

        parameters 包含當前HTTP請求參數(shù)的Map #parameters.id[0]作用相當于request.getParameter("id") 

       request 包含當前HttpServletRequest的屬性(attribute)的Map #request.userName相當于request.getAttribute("userName")

       session 包含當前HttpSession的屬性(attribute)的Map #session.userName相當于session.getAttribute("userName") 

       application 包含當前應用的ServletContext的屬性(attribute)的Map #application.userName相當于application.getAttribute("userName") 

       attr 用于按request > session > application順序訪問其屬性(attribute) #attr.userName相當于按順序在以上三個范圍(scope)內(nèi)讀取userName屬性,直到找到為止 

     2,、用于過濾和投影(projecting)集合,,如books.{?#this.price<100}; 

     3,、構造Map,,如#{'foo1':'bar1', 'foo2':'bar2'}。 


二,、"%"的用法 

    “%”符號的用途是在標志的屬性為字符串類型時,,計算OGNL表達式的值。例如在Ognl.jsp中加入以下代碼: 

    <h3>%的用途</h3> 

    <p><s:url value="#foobar['foo1']" /></p> 

    <p><s:url value="%{#foobar['foo1']}" /></p> 


三、"$"的用法 

    1,、用于在國際化資源文件中,,引用OGNL表達式 

    2、在Struts 2配置文件中,,引用OGNL表達式 

     例如: 

         <action name="AddPhoto" class="addPhoto"> 

            <interceptor-ref name="fileUploadStack" />            

            <result type="redirect">ListPhotos.action?       albumId=${albumId}</result> 

        </action>

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多