fykyx521  
          日歷
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345
          統計
          • 隨筆 - 2
          • 文章 - 2
          • 評論 - 0
          • 引用 - 0

          導航

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          OGNL框架的使用入門(一)

          關鍵字: OGNL 例子
              OGNL是Object-Graph Navigation Language的縮寫,它是一種功能強大的表達式語言(Expression Language,簡稱為EL),通過它簡單一致的表達式語法,可以存取對象的任意屬性,調用對象的方法,遍歷整個對象的結構圖,實現字段類型轉化等功能。
              開源框架OGNL就是基于該表達式語言的一個實現,你可以從http://www.ognl.org得到ognl.jar,源碼和一些文檔。本文主要通過一個例子講述通過Java Main函數如何使用ognl.jar。
              當然,首先得建立你的工程,然后把ognl.jar引入到你的類路徑中。同時把junit.jar也引入到你的類路徑,因為本文的例子的測試代碼需要用到junit.jar。
              然后建立Java類Company.java,User.java。這兩個類只是簡單的JavaBean。代碼如下:
          Java代碼 復制代碼
          1. /**  
          2.  * 公司對象  
          3.  * */  
          4. public class Company {   
          5.     /**  
          6.      * 公司名字  
          7.      * */  
          8.     private String companyName;   
          9.     public String getCompanyName() {   
          10.         return companyName;   
          11.     }   
          12.     public void setCompanyName(String companyName) {   
          13.         this.companyName = companyName;   
          14.     }   
          15. }   
          16. /**  
          17.  * 用戶對象  
          18.  * */  
          19. public class User {   
          20.        
          21.     /**  
          22.      * 姓名  
          23.      * */  
          24.     private String name;   
          25.        
          26.     /**  
          27.      * 所在公司  
          28.      * */  
          29.     private Company company;   
          30.     public String getName() {   
          31.         return name;   
          32.     }   
          33.     public void setName(String name) {   
          34.         this.name = name;   
          35.     }   
          36.     public Company getCompany() {   
          37.         return company;   
          38.     }   
          39.     public void setCompany(Company company) {   
          40.         this.company = company;   
          41.     }   
          42.   
          43. }   
          44.      

              接著,建立類TestOngl.java,主要的測試代碼都在該類中。
          Java代碼 復制代碼
          1. package ognltest;   
          2.   
          3. import java.util.HashMap;   
          4. import java.util.Map;   
          5.   
          6. import junit.framework.TestCase;   
          7. import ognl.Ognl;   
          8. import ognl.OgnlException;   
          9.   
          10. public class TestOngl extends TestCase{   
          11.     //此處為類中的代碼。   
          12. }  

              類中的第一方法為,testOgnlSimpleProperty,演示了如何用Ognl從一個簡單對象中取屬性值。代碼如下:
          Java代碼 復制代碼
          1. /**  
          2.      * 測試簡單屬性  
          3.      * */  
          4.     public void testOgnlSimpleProperty()   
          5.     {   
          6.         User user=new User();   
          7.         user.setName("abc");   
          8.         try {   
          9.             Object result = Ognl.getValue("name",user);//********(1)   
          10.             System.out.println("***簡單屬性**********result::"+result);   
          11.             //輸出:***簡單屬性**********result::abc   
          12.         Company com=new Company();   
          13.         com.setCompanyName("某某科技有限公司");   
          14.         user.setCompany(com);   
          15.            
          16.         result=Ognl.getValue("company.companyName",user);//*******(2)   
          17.         System.out.println("***嵌套屬性**********result::"+result);   
          18.         //輸出:***嵌套屬性**********result::某某科技有限公司   
          19.         } catch (OgnlException e) {   
          20.             // TODO Auto-generated catch block   
          21.             e.printStackTrace();   
          22.         }   
          23.     }  


              其中行(1)中的”name”,行(2)中的” company.companyName”就是表達式語言了,只不過這兩個表達式是最但的表達式了。
              類中的第二方法為,testFromMap,演示了如何用Ognl從一個Map中取對象中取對象或對象的屬性值。代碼如下:
          Java代碼 復制代碼
          1. /**  
          2.      * 測試從Map中取  
          3.      * */  
          4.     public void testFromMap() throws OgnlException   
          5.     {   
          6.         Map distObject=new HashMap();   
          7.         distObject.put("abc","10000");   
          8.         Object result = Ognl.getValue("abc",distObject);//********(1)   
          9.            
          10.         System.out.println("***從Map中取簡單屬性**********result::"+result);   
          11.         //輸出:***從Map中取簡單屬性**********result::10000   
          12.         User user=new User();   
          13.         user.setName("myName");   
          14.         distObject.put("user",user);   
          15.         result = Ognl.getValue("user.name",distObject);//********(2)   
          16.         System.out.println("***從Map中取嵌套屬性**********result::"+result);   
          17.         //輸出***從Map中取嵌套屬性**********result::myName   
          18.            
          19.     }  


              好了,通過這個例子,相信大家知道Ognl表達式是怎么一回事了,也應該了解怎么使用ognl.jar。不妨大家自己動手去聯系一下這個例子,感受一下ognl的強大之處。
              其實,現在流行的MVC框架webwork,struts2都用到了OGNL,如果你學會了OGNL的基礎知識,那么你在學webwork中的OGNL時,或者struts2中的OGNL時,也就輕車熟路了。
          接下去的章節將更進一步講述OGNL的使用。Qq: 916932073。
          posted on 2009-03-03 14:18 閱讀(104) 評論(0)  編輯  收藏

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


          網站導航:
           
           
          Copyright © 康 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 通海县| 镇安县| 普陀区| 财经| 永州市| 惠安县| 资溪县| 囊谦县| 永定县| 肇源县| 德江县| 齐齐哈尔市| 自治县| 泰兴市| 永德县| 敦煌市| 澄江县| 搜索| 正阳县| 高要市| 南部县| 开平市| 北海市| 竹溪县| 建始县| 滨海县| 牟定县| 溆浦县| 稷山县| 铜梁县| 汤阴县| 大石桥市| 民丰县| 马山县| 浮山县| 兖州市| 施秉县| 乌审旗| 兴国县| 德阳市| 府谷县|