Struts 태그 라이브러리의 OGNL

14275 단어 Ognl
Ognl(Object Graph Navigation Language) 객체 맵 탐색 언어 1.OgnlContext (상하문 대상) 는 맵 인터페이스를 실현하고 유일한 루트 대상 (루트) 이 존재하며, 프로그램을 통해 상하문에 있는 대상을 루트 대상으로 설정할 수 있습니다.2. OGNL에서 표현식에 # 번호를 사용하지 않으면 OGNL은 루트 객체에서 해당 속성에 대응하는 get 방법을 찾습니다. 루트 객체의 속성이 아닌 경우 # 번호로 시작하여 OGNL에게 당신이 지정한 특정 객체의 속성을 찾아야 합니다.3. OGNL을 사용하여 정적 방법을 호출할 때 다음과 같은 문법에 따라 표현식을 작성해야 한다. @package.classname@methodname(parameter) 4. OGNL에 있어서java.lang.Math는 기본 클래스입니다. 자바를 호출하면.lang.Math의 정적 방법은 클래스 이름을 지정할 필요가 없습니다. 예를 들어 @@min(3,6).5. OGNL의 경우 배열과 집합은 동일하며 아래 색인을 통해 접근합니다.컬렉션을 구성할 때 형식을 사용합니다.6. OGNL을 사용하여 맵(Map)을 처리하는 문법 형식은 다음과 같다. "#{'key1':'value1','key2':'value2','key3':'value3'}"7. OGNL은 집합에 대해 일부 위조 속성(예를 들어 size, isEmpty)을 제공하여 우리가 속성의 방식으로 방법을 호출할 수 있게 한다(본질적인 원인은 집합 중의 많은 방법이 자바빈의 명칭 규칙에 부합되지 않기 때문이다). 그러나 우리는 여전히 호출 방법을 통해 위조 속성과 같은 목적을 실현할 수 있다.8. 필터링: collection.{?expression}, 집합의 첫 번째 요소를 가져옵니다:collection.{^ expression}, 집합의 마지막 요소를 가져옵니다:collection.{$ expression} 9. 필터 작업을 사용할 때 현재 반복되고 있는 컬렉션의 객체를 나타내는 데 사용되는 #this를 사용합니다.10. 투영(projection):collection.{expression} 11. 필터와 투영 사이의 차이: 데이터베이스에 있는 테이블에 비해 필터는 줄을 뽑는 작업이고 투영은 열을 뽑는 작업이다.12. struct2에는 값 창고라는 개념(Value Stack)이 있다.ValueStack은 N 구문과 top 키워드를 통해 ValueStack의 모든 객체에 액세스할 수 있습니다.13. struts2에서 루트 객체는 ValueStack입니다.Struts2의 모든 프로세스에서 ValueStack의 최상위 객체는 Action 객체여야 합니다.14.Struts2의 명명된 객체 parameters #parameters.username; request #request.username; session #session.username; application #application.username; attr #attr.username; 15. struts2 태그 라이브러리 속성 값의%와 # 번호의 관계: - 태그의 속성 값이 OGNL 표현식이라면%{}을 추가할 필요가 없습니다. -만약 탭의 속성 값이 문자열 형식이라면, 문자열에% {}이 나타나는 모든 부분은 OGNL 표현식으로 해석되고, 해석이 끝난 후에 다른 문자열과 조립하여 최종 문자열 값을 구성합니다. -우리는 모든 속성 값에% {}을 추가할 수 있습니다. 이 속성 값이 OGNL 표현식이라면 탭 처리 클래스는% {}을 무시합니다.인스턴스 코드:
        Person person = new Person();
        person.setName("zhangsan");

        Dog dog = new Dog();
        dog.setName("wang");

        OgnlContext context = new OgnlContext();
        context.put("person", person);
        context.put("dog", dog);

        context.setRoot(person); //     

        Object obj = Ognl.parseExpression("name");
        Object obj1 = Ognl.getValue(obj, context, context.getRoot());
        System.out.println(obj1);

        System.out.println("-----------------");
        Object obj2 = Ognl.parseExpression("#person.name");
        Object obj3 = Ognl.getValue(obj2, context, context.getRoot());
        System.out.println(obj3);

        System.out.println("-----------------"); 
        Object obj4 = Ognl.parseExpression("#dog.name");
        Object obj5 = Ognl.getValue(obj4, context, context.getRoot());
        System.out.println(obj5);

        System.out.println("-----------------");
        Object obj6 = Ognl.parseExpression("#dog.name.toUpperCase()"); //    
        Object obj7 = Ognl.getValue(obj6, context, context.getRoot());
        System.out.println(obj7);

        System.out.println("-----------------");
        Object obj8 = Ognl.parseExpression("@java.lang.Integer@toBinaryString(10)");
        Object obj9 = Ognl.getValue(obj8, context, context.getRoot());
        System.out.println(obj9);

        System.out.println("-----------------");
        Object obj10 = Ognl.getValue("@@max(4,8)", context, context.getRoot());
        System.out.println(obj10);

        System.out.println("-----------------");
        Object obj11 = Ognl.getValue("new java.util.LinkedList()", context, context.getRoot());
        System.out.println(obj11);

        System.out.println("-----------------"); //    
        Object obj12 = Ognl.getValue("{'aa','bb','cc'}[1]", context,context.getRoot());
        System.out.println(obj12);

        System.out.println("-----------------");//    
        Object obj13 = Ognl.getValue("new java.lang.String[]{'aa','bb','cc'}[2]", context, context.getRoot());
        System.out.println(obj13);

        ArrayList<String> list = new ArrayList<String>();
        list.add("hello");
        list.add("world");
        list.add("chm");

        context.put("list", list);

        System.out.println("-----------------");
        Object obj14 = Ognl.getValue("#list[1]",context, context.getRoot());
        System.out.println(obj14);

        System.out.println("-----------------");//    (map)
        Object obj15 = Ognl.getValue("#{'key1':'value1','key2':'value2','key3':'value3'}['key2']", context , context.getRoot());
        System.out.println(obj15);

        System.out.println("-----------------");
        ArrayList<Person> persons = new ArrayList<Person>();
        Person p1 = new Person();
        Person p2 = new Person();
        Person p3 = new Person();
        p1.setName("zhangsan");
        p2.setName("lisi");
        p3.setName("wangwu");
        persons.add(p1);
        persons.add(p2);
        persons.add(p3);
        context.put("persons", persons);

        //  (filtering)
        Object obj16 = Ognl.getValue("#persons.{? #this.name.length() > 4}[0].name", context, context.getRoot());
        System.out.println(obj16);

        //             
        Object obj17 = Ognl.getValue("#persons.{^ #this.name.length() > 4}[0].name", context, context.getRoot());
        System.out.println(obj17);

        //              
        Object obj18 = Ognl.getValue("#persons.{$ #this.name.length() > 4}[0].name", context, context.getRoot());
        System.out.println(obj18);

        //  (projection)
        Object obj19 = Ognl.getValue("#persons.{name}", context, context.getRoot());
        System.out.println(obj19);

        System.out.println("-----------------");
        Object obj20 = Ognl.getValue("#persons.{#this.name.length()>4?'hello':#this.name}", context, context.getRoot());
        System.out.println(obj20);

좋은 웹페이지 즐겨찾기