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
|
'Frontend > velocity' 카테고리의 다른 글
Velocity 강좌 III - Samples | by Hoon (0) | 2010.12.23 |
---|---|
Velocity II - Development Configuration | by Hoon (0) | 2010.12.23 |
댓글