아파치 벨로시티

아파치 벨로시티(Apache Velocity)는 2001년 4월에 처음 출시된 자바 기반 템플릿 엔진으로, 자바 코드에 정의된 객체를 참조하는 템플릿 언어를 제공한다. 웹 애플리케이션에서 모델-뷰-컨트롤러 디자인 패턴을 통해 프리젠테이션 계층과 비즈니스 계층 간의 깔끔한 분리를 보장하는 것을 목표로 한다.

벨로시티는 아파치 소프트웨어 재단에서 호스팅하는 오픈 소스 소프트웨어 프로젝트이다. 아파치 라이선스 하에 배포된다. 존 스콧 스티븐스(Jon Scott Stevens)는 파워PC G4 칩의 AltiVec 벨로시티 엔진에서 이름을 따왔다.

 용도 
벨로시티를 사용하는 몇 가지 일반적인 애플리케이션 유형은 다음과 같다.
 alt=AWS API Gateway body mapping template|섬네일|AWS API Gateway body mapping template.웹 애플리케이션: 웹 개발자는 HTML 페이지 구조를 렌더링한다. 콘텐츠는 동적 정보로 채워진다. 페이지는 VelocityViewServlet 또는 벨로시티를 지원하는 여러 프레임워크 중 하나로 처리된다.
 소스 코드 생성: 벨로시티는 템플릿을 기반으로 자바, SQL, 포스트스크립트 소스 코드를 생성하는 데 사용할 수 있다. 여러 오픈 소스 및 상용 개발 소프트웨어 패키지가 이러한 방식으로 벨로시티를 사용한다.
 자동 전자우편: 많은 애플리케이션이 계정 가입, 비밀번호 알림, 또는 자동으로 전송되는 보고서에 대한 자동 이메일을 생성한다. 벨로시티를 사용하면 이메일 템플릿을 자바 코드에 직접 포함시키는 대신 텍스트 파일에 저장할 수 있다.
 XML 변환: 벨로시티는 아나키아(Anakia)라는 앤트 작업을 제공하는데, 이는 XML 파일을 읽어 벨로시티 템플릿에서 사용할 수 있도록 한다. 일반적인 응용 프로그램은 일반적인 "xdoc" 형식으로 저장된 소프트웨어 문서화를 스타일이 적용된 HTML 문서로 변환하는 것이다.
 AWS API Gateway는 JSON 출력을 위해 Apache Velocity 엔진을 바디 매핑 템플릿에 사용한다.

 코드 예시 
다음 템플릿:
## Velocity Hello World
<html>
    <body>
        #set( $foo = "Velocity" )
        ## followed by
        Hello $foo World!
    </body>
</html>

벨로시티에 의해 처리되면 다음과 같은 HTML이 생성된다.
<html>
    <body>
        Hello Velocity World!
    </body>
</html>

조건을 사용한 또 다른 예제:#if( $foo < 10 )
    **Go North**
#elseif( $foo == 10 )
    **Go East**
#elseif( $bar == 6 )
    **Go South**
#else
    **Go West**
#end다이나모DB HTTP용 AWS API 게이트웨이 본문 매핑 템플릿:{
    "TableName": "happy-marketer",
    "KeyConditionExpression": "pk = :pk AND begins_with(sk, :sk)",
    #if ($input.params('projectStatus') == 'archived')
    "FilterExpression": "projectStatus = :Archived",
    #else
    "FilterExpression": "projectStatus = :InProgress OR projectStatus = :Completed",
    #end
    "ExpressionAttributeValues": {
        ":pk": {
            "S": "project"
        },
        ":sk": {
            "S": "$context.authorizer.claims.email"
        },
        #if ($input.params('projectStatus') == 'archived')
        ":Archived": {
            "S": "Archived"
        }
        #else
        ":InProgress": {
            "S": "In Progress"
        },
        ":Completed": {
            "S": "Completed"
        }
        #end
    }
}옵션 배열을 사용한 또 다른 예제; 조건이 없으면 잘못된 결과 JSON으로 인해 실패한다:{
    "email": "$context.authorizer.claims.email"
    #if ($input.params('countries') != "")
    , "countries": $input.params('countries')
    #end
}Apache Velocity 템플릿의 구문 및 전체 개념은 현재 오픈 소스 프로젝트인 오래된 WebMacro 템플릿 엔진의 구문과 유사하다.

 같이 보기 
 아파치 토크
 프리메이커
 자카르타 서버 페이지
 타임리프

 각주 

 참고 자료 




 외부 링크 

 사용자 가이드

분류:아파치 소프트웨어 재단 프로젝트
분류:자바 라이브러리