Java의 Struts 프레임워크에서 ONGL 표현식의 기본 사용 시작

3635 단어 StrutsONGLJava
먼저 OGNL의 개념을 살펴보겠습니다.
OGNL은 Object-Graph Navigation Language의 줄임말로 전체 대상도 내비게이션 언어라고 불리며 기능이 강한 표현식 언어로 간단하고 일치하는 문법을 통해 대상의 속성을 임의로 접근하거나 호출하는 방법으로 전체 대상의 구조도를 훑어보고 대상의 속성 유형의 변환 등 기능을 실현할 수 있다.
그 밖에 OGNL에 대한 몇 가지 지식을 알아야 한다.
1. OGNL 표현식의 계산은 OGNL 컨텍스트를 중심으로 이루어집니다.
OGNL 컨텍스트는 사실상 맵 객체입니다. ognl.OgnlContext 클래스 표현그 안에는 여러 개의 자바빈 객체를 저장할 수 있다.컨텍스트 루트 객체가 있습니다.
컨텍스트의 루트 객체는 이름을 사용하여 액세스하거나 속성 이름을 사용하여 속성 값에 직접 액세스할 수 있습니다.그렇지 않으면 "#key"접두사를 붙여야 합니다.
2. Struts2의 탭 라이브러리는 OGNL 표현식을 사용하여 ActionContext의 대상 데이터에 접근합니다.예: .
3. Struts2는 ActionContext를 OGNL 컨텍스트로 설정하고 값 스택을 OGNL의 루트 대상으로 ActionContext에 배치합니다.
4. ValueStack:
값 창고에 대상을 넣고, 삭제하고, 조회할 수 있습니다.값 스택의 객체에 액세스하려면 "#"을 (를) 사용하지 않습니다.
Struts2는 항상 현재 Action 인스턴스를 스택 상단에 배치합니다.따라서 OGNL에서 Action의 속성을 참조해도 "#"을 생략할 수 있습니다.
5. ActionContext의put(key,value)를 호출하여 넣은 데이터는 #로 접근해야 합니다.
OGNL에서 중요한 세 가지 기호: #,%,$:
#,%와 $기호는 OGNL 표현식에 자주 나타나는데 이 세 가지 기호도 개발자가 쉽게 파악하고 이해하지 못하는 부분이기 때문에 시간이 걸려서 점점 알 수 있다...
1. # 기호
# 기호의 용도는 일반적으로 세 가지가 있습니다.
비루트 객체 속성(예: #session)에 액세스합니다.msg 표현식, Struts 2에서 값 스택은 루트 대상으로 간주되기 때문에 다른 루트가 아닌 대상에 접근할 때 # 접두사를 추가해야 합니다.실제로 # 은 ActionContext에 해당합니다.getContext();#session.msg 표현식은 ActionContext에 해당합니다.getContext().getSession(). getAttribute("msg") .
퍼슨스와 같은 필터링 및 투영 집합에 사용됩니다.{?#this.age>25},persons.{?#this.name=='pla1'}.{age}[0].
예를 들어 예시에서 #{'foo1':'bar1','foo2':'bar2'}를 구성하는 데 사용됩니다.
2.% 기호
% 기호의 용도는 로고의 속성이 문자열 형식일 때 OGNL 표현식의 값을 계산하는 것입니다. 이것은 js의 eval과 유사합니다. 폭력적입니다.
3. $기호
$기호는 주로 두 가지 용도로 사용됩니다.
국제화 자원 파일에서 OGNL 표현식을 인용합니다. 예를 들어 국제화 자원 파일의 코드:reg.agerange = 국제화 자원 정보: 나이는 ${min}과 ${max} 사이여야 합니다.
Struts 2 프레임워크의 구성 파일에서 OGNL 표현식을 참조합니다(예:

<validators>  
  <field name="intb">  
      <field-validator type="int">  
      <param name="min">10</param>  
      <param name="max">100</param>  
      <message>BAction-test : ${min} ${max} !</message>  
    </field-validator>  
  </field>  
</validators> 
 
예: 첫 번째 OGNL 프로그램

public class OGNL1 
{ 
  public static void main(String[] args) 
  { 
    /*  Person  */ 
    Person person = new Person(); 
    person.setName("zhangsan"); 
     
    try 
    { 
      /*  person name  */ 
      Object value = Ognl.getValue("name", person); 
 
      System.out.println(value); 
    } 
    catch (OgnlException e) 
    { 
      e.printStackTrace(); 
    } 
  } 
} 
 
class Person 
{ 
  private String name; 
 
  public String getName() 
  { 
    return name; 
  } 
 
  public void setName(String name) 
  { 
    this.name = name; 
  } 
} 
콘솔 출력:

zhangsan
개인 대상의 name 속성 값을 정확하게 얻었습니다. 이 getValue는 다음과 같이 설명합니다.

public static <T> T getValue(String expression,Object root)throws OgnlException 
 
Convenience method that combines calls to parseExpression and getValue.  
 
Parameters: 
expression - the OGNL expression to be parsed 
root - the root object for the OGNL expression  
Returns: 
the result of evaluating the expression 
OGNL은 루트 객체(root)에서 표현식에 따라 값을 추출합니다.

좋은 웹페이지 즐겨찾기