'ajax'에 해당되는 글 1건

  1. 2012.05.04 DWR (Direct Web Remoting) 이란?
2012.05.04 18:08
홍보배너링크
홍보배너링크

DWR (Direct Web Remoting)이란?

 

A. 연관 단어 스토밍

- 프락시 기반 AJAX

- AJAX

- Spring DWR

- 서버사이드 기반

- node.js

 

B. DWR을 짧게 표현해보면

1. 자바로 구현한 서버측 로직을 클라이언트에서도 호출할 수 있게 한 것.

2. ajax를 통해서 서버와의 원격통신을 쉽게 할 수 있게 만든 것.

3. node.js는 플랫폼으로 봐야한다.

4. DWR은 프레임워크로 보면 된다.

5. AJAX Call이 url 호출 방식(request,response)이면 DWR은 다이렉트로 Service레이어 나 DAO레이어를 호출 하는 방식.

6. javascript에서 java class의 메서드를 사용할 수 있도록 해주는 Library.

 

C. 구현방법

1. servlet, jsp로 json 출력토록 하고 ajax로 호출해서 사용

 

D. 특징

1. XMLHttpRequest를 거치지 않는다.

 

E. 웹에 널려있는 주절~ 주저리들~

1. 아주 초창기에 썼었는데 지금은 쓰지 않는단다.

1-1. 1.의 근거 : 3~4 년 전을 마지막으로 더 이상 버전 업을 하지 않는다.

1-2. 1.의 근거에 더한 나의 추론 : 서버사이드의 스크립트가 유행하기 때문? node.js

2. 자바스크립트에서 서버측 로직을 호출? 맞는 말인 듯

3. 서버에서 스크립트 로직을 호출? 이건 아닌 듯

4. 서버단에서 js파일을 생성하는 방식(흠... 아닌 것 같은 데 한 표 더 나왔네 - -)

 

F. 어떤 내용이 맞는지 증명해보자.

주절주절 떠벌려져 있는 웹에 널려있는 자료를 두 가지로 압축해보면

하나, 스크립트에서 서버 단 로직을 호출 (내 개인적인 생각과 일치한다.)

둘, 서버측에서 스크립트 로직을 호출 (이런 주장들도 있더라.)

* 위와 같이 사용자들이 내린 정의를 두 가지로 도출 해보았는데 어떤 것이 옳은 지는 직접 해봐야 알 것 같다.

 

G. 작업시작

1. 이 문서의 Z. 참고 URL에 보면 dwr.jar와 의존하고 있는 common-logging.jar를 받을 수 있다. 다운을 받자.

 

2. Webapplication의 다음 경로 /WEB-INF/lib 에 다운받은 jar파일을 넣는다.

 

3. 빌드패스 설정에서 위의 jar파일들을 참조하도록 추가해준다.

 

4. 그리고 다음의 4개의 파일을 작성 해주면 된다.

- web.xml, dwr.xml, Xxx.java, xxx.jsp

4.1 web.xml - DWR 서블릿 매핑

4.2 Xxx.java - 자바빈

4.3 xxx.jsp - 출력할 화면

4.4 dwr.xml - 자바빈 매핑(여기서 자바빈은 스크립트단에서 호출 할 클래스이다. 클래 스에서 호출할 메서드도 지정 가능하다.)

 

5. web.xml을 다음과 같이 작성한다.

<!-- DWR Exam -->

<servlet>

  <servlet-name>dwr-invoker</servlet-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>


6. 스크립트에서 호출할 클래스를 만들어준다.

package com.softcast.myspring.dwr;

 

public class GetHello {

  public GetHello() {

  }

  public String getMessage(){

    return "hello my friend DWR"

  }

}

 

7. dwr.xml을 web.xml과 같은 위치에 아래와 같은 내용으로 만들어 준다.

<?xml version="1.0" encoding="UTF-8"

<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"

"http://getahead.org/dwr/dwr30.dtd">

<dwr>

  <allow>

    <create creator="new" javascript="GetHello">

      <param name="class" value="com.softcast.myspring.dwr.GetHello" />

      <include method="getMessage"/>

    </create>

  </allow>

</dwr>

 

8. 6.에서 작성한 getMessage메서드를 호출하기 위한 jsp페이지를 만든다.

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

<script type="text/javascript">

function msg(){

  GetHello.getMessage(view);

}

function view(data){

  alert(data);

}

</script>

<script type="text/javascript" src="<c:url value="/dwr/engine.js" />"></script>

<script type="text/javascript" src="<c:url value="/dwr/util.js" />"></script>

<script type="text/javascript" src="<c:url value="/dwr/interface/GetHello.js" />"></script>

</head>

<body>

 

  <input type="button" value="getMSG" onclick="msg();"/>

 

</body>

</html>

  9. url을 http://HOST:PORT/{YOUR_APP}/dwr/xxx.jsp 이와 같이 요청한다.

     ex) http://localhost:8080/myproject/dwr/dwrTest.jsp

     버튼을 클릭하면 아래와 같은 얼럿창이 뜨는 것을 볼 수 있다.

위 사진에서 동그라미 쳐진 부분을 보면 200 OK 사인이 떨어진 것을 보아 XMLHttpRequest 요청이 성공적으로 들어갔다는 것을 유추할 수 있다. 이로써 DWR이 AJAX기반의 프레임웍? 라이브러리? 라는 것을 확인할 수 있었다.


Z. 다운로드 및 예제 (참고 URL)

DWR 설명이 간단하게 잘 나온 블로그 :

http://blog.naver.com/rookieangel?Redirect=Log&logNo=140115572330

 

DWR 사이트 : http://directwebremoting.org/dwr

Commons-logging 사이트 : http://commons.apache.org/logging/download_logging.cgi

--------------------------------------------------------------------------------------------------------------------

** 막상 포스트 했다지만 이게 DWR이다 라는 것을 제대로 못 보여준 듯 싶다.

DWR에 대해 조사하던 중 위에서 언급한 프락시 기반의 AJAX 라는 정의도 있었는데. 프락시 기반이라는게 무슨 소리인지 또한 아직 정리하지 못했다.

아직 개념이 허당이라 이것이 서버사이드 스크립트 라이브러리인지, 왜 요즘은 DWR을 사용 하지 않는다는 것인지도 정리하지 못하였다. 5월7일 사내 세미나에서는 꼭 빠진 내용, 필요한 내용을 정리하여 발표해야겠다. 

물론 그 후에 이 블로그도 수정해야겠지!!

부족함이 많은 포스트 읽어주셔서 감사합니다. 정리가 안된 부분은 조사 되는대로 업데이트 시키거나 포스팅 하도록 하겠습니다~


--------------------------------------------------------------------------------------------------------------------

12.05.18 내용 추가

DWR은 스크립트단에서 서비스로직을 호출한다고 단정지었던 말을 정정합니다.

DWR은 Reverse AJAX라는 기능 또한 포함하고 있습니다.

즉 JAVA단에서 javascript함수를 호출 할 수 있게 되는 것이지요.

이에 대해서는 다음에 포스팅 하도록 하겠습니다.

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'AJAX' 카테고리의 다른 글

DWR (Direct Web Remoting) 이란?  (0) 2012.05.04
홍보배너링크
Posted by 신나는 뒤벨로퍼 Imovator

티스토리 툴바