본문 바로가기
Frontend/velocity

Velocity 개요, 실행원리 | by Hoon

by 플로거 2010. 12. 23.

 



1.      Velocity 개요

Struts프레임워크를 도입하는 이점중의 하나는 web application의 Presentation부분(JSP등)과 Controller 부분(Action클래스)의 결합이 느슨해지는 것이 있다. 그래서 Presentation부분도 Controller 부분도 서로 의존하지 않고, 독립된 Controller 로서 각각 구현할 수 있다. 이에 따라 , 시스템의 다른 부분을 건들이지 않고, Presentation부분만을 통째로 바꿔 넣는 것이 가능하다.

실 예로, Struts의 Presentation부분을 구현하기에는, JSP를 사용하는 것이 일반적이지만, 그것 외의 기술을 이용하는 것도 가능하다. 여기서는 JSP를 대체해 꽤 사용되는 Apache Jakarta의 Template엔진인 Velocity를 사용하는 것을 소개하겠다.

 Velocity는, 자바베이스의 범용 Template엔진이다.

Template엔진이라는 것은  우선 만들어 놓은 Template에, 실행 시 Parameter에 값을 던져주고, data를 생성해주는 컴포넌트이다. 용도는 HTML에 한정되지 않고, XML이나
CSV, TEXT등의 여러 가지 DATA형식을 생성에 사용할 수 있다.

 Velocity를 채용하는 이점으로는, 간단하게 배우기 쉬운 Template기술언어VTL(Velocity Template Language)에 따라서, 간단히 동적 페이지를 만들 수 있다는 것이다. 개발환경에 Eclipse를 쓴다면, Velocity plug-in을 사용해서, 템플릿의 아웃라인표시나 입력보완을 할 수 있기 때문에 편리하다.


2.     JSP  vs  Velocity

1. Velocity 가볍고, 빠르고 융통성이 있다.JSP 보다 코드의 양이 줄어든다. 랜더링 속도가 빠르다.

    Template 으로부터  SQL, PostScript, e-mail, XML 등을 쉽게 생성할 있다.

2.   Velocity 다른 것과 연동하기 쉽다.

3.   Velocity 간단하면서도 강력하다.



3.     Velocity 실행 원리

최초에 was 실행 되면 server.xml(was 마다 이름은 조금씩 다를 있다.) 먼저 실행한다. 그런 다음. server.xml 설정되어 있는 Context 대한 실행을 하는데(webapps 폴더 아래에 있는 경우는 자동으로 실행된다.),

Context(하나의 web application) 놓고 봤을 , 먼저 WEB-INF/web.xml 읽어들인다. Struts 여기에 ActionServlet WEB-INF/struts-config.xml , taglib 등을 설정한다.

Velocity 역시 마찬가치다.  여기에 struts ActionServlet 대신 org.apache.velocity.tools.view.servlet.VelocityViewServlet , struts-config.xml 대신 velocity-toolbox.xml, velocity.properties 설정해서 전체 어플리케이션에 적용 되도록 한다.Velocity 서블릿에서 컨텍스트를 받아들일 때 JSP태그와 동일한 scope전략을 이용한다. , request scope를 가장 먼저 검사하고, session scope를 검사한 다음, 마지막으로  application scope를 검사한다.

엔진은 템플릿을 랜더링할 때 Velocity 문장과 레퍼런스를 검색한다. Velocity 문장은 # 기호와 라인의 앞부분에 나오는 키워드로 구분한다. 레퍼런스는 컨텍스트에 있는 변수에 해당한다. 레퍼런스는 $기호와 그 다음에 나오는 레퍼런스 이름으로 구분한다. 어떠한 자바객체도 이러한 Context에 올 수 있으며, 레퍼런스로 사용될 수 있다. 레퍼런스는 자바 클래스에 정의된 모든 public 메소드에 접근할 수 있다.

 

[taglib]

<request:isUserInRole role=”contirbutor”>

  <%-- … -%>

</request:isUserInRole>

[velocity]

 #if $request.isUserInRole(“contributor”)

    # ...

 #endif

 

 <p>Username: $(session.getAttribute(“username”))</p>

 <p>Username: $!user.username</p>

 

[struts-config.xml]

<forward name=”continue” path=”/page/Logon.jsp”/>

=> <forward name=”continue” path=”/page/Logon.vm”/>




2010/12/23 - [JAVA/Velocity] - Velocity II - Development Configuration
2010/12/23 - [JAVA/Velocity] - velocity III - Samples

Professional Struts Applications: Building Web Sites with Struts, Object Relational Bridge, Lucene, and Velocity
외국도서
저자 : John Carnell
출판 : Wrox 2003.01.01
상세보기


bit.ly/2LMzjNC

 

커피한잔(5000원) 으로 배우는 Vue.js 개념 핵심 강의! - 인프런 인강 55% 할인 쿠폰

커피한잔(5000 원) 으로 배우는 Vue.js 개념 핵심 강의! 모바일 환경에서도 강의를 수강할 수 있도록 강의가 많이 개선되었습니다. 인프런 인터넷 강의 선착순 100명 55% 할인쿠폰! [Vue.js] javascript Real

plogger.tistory.com

bit.ly/2TtRHis

 

[Vue.js 입문] 초보 실전 웹앱 개발 - 1부 : vue 개념 ~ 핵심 문법 - 인프런

이 강의를 수강하시면 Vue.js 와 관련된 기본적인 개념부터 Real 웹앱 개발을 해 볼 수 있습니다. 이 강의는 1부 기본기 이며, 2부와 3부를 통해서 실제 Real 웹앱을 구현해 보도록 하겠습니다. 초급 ��

www.inflearn.com

 

반응형

'Frontend > velocity' 카테고리의 다른 글

Velocity 강좌 III - Samples | by Hoon  (0) 2010.12.23
Velocity II - Development Configuration | by Hoon  (0) 2010.12.23

댓글