블로그 이미지
플로거
Android/J2EE/Web/Spring/Database

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Notice

Statistics Graph

'Programming/Velocity'에 해당되는 글 3

  1. 2010.12.23 Velocity 강좌 III - Samples | by Hoon
  2. 2010.12.23 Velocity II - Development Configuration | by Hoon
  3. 2010.12.23 Velocity 개요, 실행원리 | by Hoon
2010.12.23 14:40 Programming/Velocity


[Sample.vm]

 

<html>

<body>

#set($message = "Hello World! 하이")

$message<br>

Velocity Version: $version<br>

$date

</body>
</html>



 

[Welcome.vm]

 <html>
   <head>
    <title>Welcome</title>
    <BASE href="$link.baseRef">
    </head>
    <body bgcolor="#ffffff">
    #if ($logonActionForm)
    <H3>Welcome $logonActionForm.username!</H3>
    #else
    <H3>Welcome World!</H3>
    #end
    $!errors.msgs()
  </body>
</html>

[Logon.vm]

 <HTML>
<HEAD>
 <TITLE>Sign in, Please!</TITLE>
 <script language="javascript" src="validate.js"></script>
 </HEAD>
<BODY>
  테스트 중
  $!errors.msgs()
<FORM name="logonForm" method="POST" action="$link.setAction('/logonAction')"
 onsubmit="return validate(this);">
 <TABLE border="0" width="100%">
 <TR>
  <TH align="right">Username:</TH>
  <TD align="left"><INPUT type="text" name="username" dispName="username" notNull
   value="$!logonForm.username"></TD>
 </TR>
 <TR>
  <TH align="right">Password:</TH>
  <TD align="left"><INPUT type="password" name="password" dispName="password"
   notNull value="$!logonForm.password"></TD>
  </TR>
<TR>
<TD align="right"><INPUT type="submit" value="Submit" name="submit"></TD>
<TD align="left"><INPUT type="submit" value="reset" value="Reset" name="reset"></TD>
</TR>
</TABLE>
</BODY>
</HTML>

[struts-config.xml]


 <form-beans>
     <form-bean name="logonForm" type="com.jumyung.sample.form.LogonActionForm" />
  </form-beans>
  <action-mappings>
    <action input="/Logon.vm" name="logonForm" path="/logonAction" scope="session"
 type="com.jumyung.sample.action.LogonAction" validate="true" > 
      <forward name="success" path="/Welcome.vm"/>
    </action>     
  </action-mappings>


[결과]




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




저작자 표시 비영리 변경 금지
신고
posted by 훈즈 플로거
2010.12.23 14:15 Programming/Velocity

1.     Development Configuration

1.   http://jakarta.apache.org/site/downloads/downloads_velocity.html 에서 Engine

Tools 다운 받는다. velocity-1.4.tar.gz, velocity-tools-1.1.tar.gz

2.   각각의 압축을 풀면 velocity-1.4.jar, velocity-dep-1.4.jar, velocity-tools-1.1.jar,

velocity-tools-generic-1.1.jar, velocity-tools-view-1.1.jar 얻을 있다. 이것들을

개발 어플리케이션의 WEB-INF/lib폴더에 추가한다.

3.   web.xml VelocityViewServlet 배치한다.

[web.xml]

 <?xml …. ?>
<web-app …>
…중략…
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>
org.apache.velocity.tools.view.servlet.VelocityViewServlet
</servlet-class>
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/velocity-toolbox.xml</param-value>
 </init-param>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity. properties </param-value>
 </init-param>
 <load-on-startup>10</load-on-strartup>
 </servlet>
 …중략…
 <servlet-mapping>
 <servlet-name>velocity</servlet-name>
 <url-pattern>*.vm</url-pattern>
 </servlet-mapping>
…중략…
</web-app>


 

4.      velocity 설정파일

[velocity.properties]

#runtime.log=velocity.log

#runtime.log.logsystem.class=org.apache.velocity.runtime.log.AvalonLogSystem

input.encoding=EUC_KR

output.encoding=EUC_KR


 

5.      Velocity 도구함 설정 파일의 준비

[velocity-toolbox.xml]

<?xml version=”1.0”?>

<toolbox>

<data type=”number”>

<key>version</key>

<value>1.1</value>

</data>

<tool>

<key>date</key>

<scope>application</scope>

<class>org.apache.velocity.tools.generic.DataTool</class>

 </tool>

 </toolbox>

 

 

위의 샘픔은, 수치형의 프라이머티브형 버전과 날짜 도구 DataTool 오브젝트 date 등록하고 있다. 이것은 vm 템플릿중에 $version $date등으로 접근 가능하다.

 

Velocity-toolbox.xml 에서 있는 요소와 설명을 아래의 표로 정리 했다.

 

요소       부모요소       설명

<toolbox>   -            문서 루트

<data>     <toolbox>    수치/ 거짓 /문자열등의 데이터등록, type속성에

                        Number/Boolean/string 하나를 등록

<tool>     <toolbox>     오브젝트 등록

<key>     <data>,<tool> 템플릿트 참조를 위한 변수명

<value>    <data>    데이터

<class>    <tool>    오브젝트 클래스

<scope>   <tool>    오브젝트의 생존기간, application / session / request중에서 지정

 

  2010/12/23 - [JAVA/Velocity] - Velocity 개요, 실행원리
 
 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
상세보기
 

저작자 표시 비영리 변경 금지
신고
posted by 훈즈 플로거
2010.12.23 14:08 Programming/Velocity

 

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
상세보기


저작자 표시 비영리 변경 금지
신고
posted by 훈즈 플로거
prev 1 next