2007년 2월 15일 목요일

DWR과 Spring 연동하기

DWR은 Direct Web Remoting의 약자로서 Java web으로 하여금 쉽게 Ajax 기술을 사용할수 있게끔한다.
본 예제는 DWR과 Spring을 연동하는것을 통하여 DWR의 사용법을 알아보도록 하겠다.

1. DWR 라이브러리를 다운받어 온다.
http://getahead.ltd.uk/dwr/ 웹사이트에 접속하여서 dwr.jar파일을 다운로드 받어온다.
다운받어온 dwr.jar파일을 WEB-INF/lib폴더속에 복사하여 넣는다.

2. web.xml파일에 대한 설정을 한다.
<!-- Servlet configuration for DWR -->
 <servlet>
  <servlet-name>dwr-invoker</servlet-name>
    <display-name>DWR Servlet</display-name>
    <servlet-class>uk.ltd.getahead.dwr.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>

3. dwr.xml파일을 추가한다.

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
    "
http://www.getahead.ltd.uk/dwr/dwr10.dtd"><dwr>
 <allow>
  <create creator="spring" javascript="CheckAcc">
   <param name="beanName" value="CheckAcc" />
  </create>
 </allow>
</dwr>

creator속성에서는 js를 생성할 방식을 지정해주는것인데 여기서 우리는 spring과 연동을 하기 때문에 spring으로 지정하면 된다. 만약 일반 서블릿과 연동할때에는 new 로 설정해주면 된다.
param태그의 name에는 class 아니면 beanName 올수 있는데 여기서 우리는 spring하고 연동하기 때문에 beanName을 쓰기로 한다. value는 실제 applicationContext.xml파일에서 선언된 bean 네임을 설정해주면 된다.

4. DWR bean 실체를 만든다.
아래에 샘플코드를 첨부하겠다.

public class AccSessJS {
 
 private AccSessService accSessService = null;

 public void setAccSessService(AccSessService accSessService) {
  this.accSessService = accSessService;
 }
 
 public boolean isExist(int accSessNo)
 {
  AccSess accSess = accSessService.findByAccSessId(accSessNo);
  return ( null == accSess ) ? false : true;
 }
}


5. applicationContext.xml에 bean을 선언한다.

<bean id="CheckAcc" class="com.nanumsem.nnserp.acc.dwr.AccSessJS">
  <property name="accSessService">
   <ref bean="accSessService"/>
  </property>
</bean>

6. UI용 JSP파일에 관련된 JS를 import한다.

<script type='text/javascript' src='/nnserp/dwr/interface/CheckAcc.js'></script>
<script type='text/javascript' src='/nnserp/dwr/engine.js'></script>
<script type='text/javascript' src='/nnserp/dwr/util.js'></script>

7. Client측 validation을 위하여 필요한 Javascript 코드들을 삽입한다.

function regAccCheck(){
 var accId=$("accSess.idAccsess").value;  
   CheckAcc.isExist(accId,showData);//showData콜백 함수
}  
 
function showData(data){  
 if(data)
 {  
  window.alert("이미 등록이 되여있습니다.");
    }
    else
    {  
     window.alert("아직 등록이 되여있지 않습니다.");
    }  
}

댓글 없음:

댓글 쓰기