관리 메뉴

nkdk의 세상

Lift의 기본적인 구조 본문

My Programing/Scala&Lift

Lift의 기본적인 구조

nkdk 2010. 6. 8. 23:15

일단 기본 설정 까지는 이렇게 하고 기본적인 구조를 봐 볼까요.

/src/main/webapp 여기에는 HTML소스라던지가 위치하면 되겠네요.. 실제 현재 보고 있는 메인인 index.html이 여기에 있습니다.
그리고 이 폴더에서 한칸 위에 있는
/src/main/webapp/WEB-INF 여길 가 보시면 예전 톰캣 하신분은 아시겠지마, 웹 어플리케이션 설정에 관련된 XML이 들어가 있습니다. 필터 맵핑이라던지, 맵핑이라더지, 해서 url패턴에 따라 접속이 가능하게 한다던지 등등..이 있겠지요.

일단 리프트에서 보게 되는 전체적 구조가 있는데
<prefix:element> 이런식으로 구조를 띄고 있습니다. 이 말은 <lift:surround> 이런식으로 되어 있다는 이야기입니다. 자세한건 조금씩 하면서 보죠.

일단 기본적으로 선언하겠다 싶은게
 <lift:surround with="default" at="content"> 라고 하며 되겠네요. 여기서 디폴트와 그리고 content라는 부분을 잘 봐두세요.
이 부분이 index.html가 있는 폴더에 templates-hidden 폴더로 들어가면
default.html라는 파일이 있는데 여기서 <lift:bind name="content" /> 이 부분에 content입니다.
그리고 혹시 눈치 채신분도 있으시겠지만 파일 이름이 default.html이죠? 아까 그 선언에서 with에 해당하는 이름입니다. 참 특이한 구조군요.

그리고 index.html에 보면 <lift:helloWorld.howdy />  가 있는데 이게 뭔지 좀 봅시다.
일단 이 의미는 helloWorld.scala파일에 howdy라는 펑션이 있을꺼라는 추정이 되네요.
실제로도 그렇고요 src/main/scala/demo/helloworld/snippet 를 보면 HelloWorld.scala라는 파일이 있습니다.
그리고 그 안에 보면 def howdy라는 정의가 있습니다. 뭔가 제대로 가고 있는 것 같네요.

그리고 그 내용을 보면 대충
class HelloWorld {
  def howdy(in: NodeSeq): NodeSeq =
     Helpers.bind("b", in, "time" -> (new _root_.java.util.Date).toString)
}

이런 내용이 써 있는데.. 이 내용을 이야기 하자면, index.html에서
      <lift:helloWorld.howdy>
        <span>Welcome to helloworld at <b:time/></span>
      </lift:helloWorld.howdy>
이 부분이 있는데 이 부분에서 b:time이 부분을 유심히 보면 위에 선언되어 있는 이름이랑 뭔가 딱 들어맞지 않나요? 저도 필이 막 오더라고요.

그리고 이 필은 딱 들어 맞고요. 그걸 나타내는 거 였습니다.

자 다음 화에서는 pocket Change에 대해서 알아 볼까요?