프레임워크

Hagi 2010. 5. 27. 09:15

DWR 홈페이지


** 일단 모든 프레임워크를 쓸 때, 처음에는 설정의 바다에 빠질 준비를 해야한다.

1. web.xml 설정

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>

</servlet-mapping>


만약, dwr 설정을 여러개로 나누고 싶거나, dwr.xml의 경로가 잡히지 않는 다면 다음을 참고하라

=> 처음 시작할 때, dwr.xml을 WEB-INF/classes 아래에 두면되는데, 이것이 잡히지 않거나 다른 곳에 위치하고 싶을때

( http://directwebremoting.org/dwr/server/servlet/multiconfig.html )


2. dwr.xml 설정

<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">

<dwr>
<allow>
<create creator="new" javascript="EmailService" >
<param name="class" value="org.ironwill.hagi.common.util.mail.email.service.EmailService"/>
<include method="sendMail"/>
</create>
<convert converter="bean" match="org.ironwill.hagi.common.util.mail.email.model.Email" />
</allow>
</dwr>


여기서 아래쪽의 bean에 관한 것은 데이터 모델 클래스를 말하는 것이며,

include method는 create에서 선언한 해당 클래스에서 사용할 메서드를 추가하는 것임

마지막으로 javascript라는 선언은 자바스크립트 내에서 클래스를 호출할때 쓰이는 이름임


3. java 클래스 (서비스:비지니스로직)

public class EmailService{

public boolean sendMail(Email email){

boolean tf;

.......................
return tf;

}

}


4. java 클래스 (데이터 모델 : POJO)

public class Email {
// 수신자 주소
private String mailAddr;
// 제목
private String title;


/* getter 와 setter */


}


일단 5번을 수행하기에 앞서, 서버를 가동시켜서 테스트를 해보아야 한다.

http://주소(통상 localhost:8080)/WEBAPP이름(이클립스라면 프로젝트명)/dwr


테스트 통과 후 => 꼭 이것이 떠야하며, 녹색 영역의 것을 jsp에 가져다 붙여야 함

DWR Test

Methods For: EmailService
(com.tmonet.common.util.mail.email.service.EmailService)


To use this class in your javascript you will need the following script
includes:

  <script type='text/javascript' src='/dwrmail/interface/EmailService.js'></script>
<script type='text/javascript' src='/dwrmail/engine.js'></script>

In addition there is an optional utility script:

  <script type='text/javascript' src='/dwrmail/util.js'></script>

Replies from DWR are shown with a yellow background if they are simple or in
an alert box otherwise.
The inputs are evaluated as Javascript so strings
must be quoted before execution.


  • setEmail( );


    (Warning: setEmail() is
    excluded: Method access is denied by rules in dwr.xml. See below)


  • 이하 생략


    => setEmail() 이것으로 테스트를 하는 것인데 Email객체 파라미터 테스트하는 방법을 몰라서 일단 파라미터를 String 하나만으로 바꾸고 테스트를 진행한 후 다시 Email로 교체해였다.

    (아시는 분 거기 누구 없소 ~ ㅜㅜ)


    5. jsp 내의 javascript


    function sendMail(mailAddr) {
    var title = "메일 도착입니다";
    var email = {
    mailAddr:mailAddr,
    title:title,
    };
    EmailService.sendMail(email,callbackMegaFileFnc);
    }
    function callbackMegaFileFnc(pandan) {
    alert("결과 : "+pandan);

    }



    참고 :

    1. http://openframework.or.kr/Wiki.jsp?page=StartWithDWR

    2. http://litlhope.springnote.com/pages/573981

    3. http://directwebremoting.org/dwr/introduction/getting-started.html

    4. http://directwebremoting.org/dwr/introduction/scripting-dwr.html

    5. http://www.ibm.com/developerworks/java/library/j-ajax3/

    6. http://directwebremoting.org/dwr/server/servlet/multiconfig.html

    7. http://struts.apache.org/2.x/docs/dwr-plugin.html

    8. http://directwebremoting.org/dwr-demo/people/index.html