본문 바로가기

WEB_Programming/DWR

Resource Forwarding

Resource Forwarding

이 예제는 서버로 부터 검색된 페이지의 컨텐츠를 이용하여 웹 페이지를 동적으로 변경하는지에 대해서 보여준다.

DWR에의해 호출된 코드는 보통 단순한 POJO이며 웹에 대해서 알지 못한다. 이 예제에서 WebContext 클래스를 획득해서 ServletContext에 접근하는 방법에 대해서 알아볼 것이다.


이 예제는 dynamic text example과 유사하다. 큰 차이는 여기서는 this HTML page 를 이용한다는 것이다. 그리고 WebContext 클래스를 통해서 우리가 원하는 페이지를 얻을 수 있을 것이다. iframe 를 사용하지 않는다. 단지 DWR과 humble div만 이용할 것이다.


자바 코드는 다음과 같다. :

public String getInclude() {
    WebContext wctx = WebContextFactory.get();
    return wctx.forwardToString("/simpletext/forward.html");
}

이전 예제인 dynamic text example과 한가지 차이점이 있다. 이전 예제에서는 단순 텍스트를 이용했고 여기서는 HTML페이지를 이용한다는 것이다. XSS공격으로 부터 막아주기 위해서 DWR은 자동적으로 HTML 문자를 제거한다. 보통의 경우 HTML을 가지고 있다는 것은 안전하다는 것이다. 그래서 자바 스크립트는 이렇게 쓰고 있음을 확인하자.

function forward() {
  Demo.getInclude(function(data) {
    dwr.util.setValue("forward", data, { escapeHtml:false });
  });
}

3번째 파라미터는 선택적인 파라미터로 DWR 함수의 현재 개수를 나타낸다. 그것은 함수가 어떻게 동작되는지에 대해 커스터마이즈 할 수 있게 해 준다. 이 예에서는 DWR HTML문자 제거를 하지않고 그대로 패싱한다는 의미이다.


예제 소스 :


HTML Source :

<p>
  <input value="Include Page" type="button" onclick="forward()"/><br/>
  Included Page:
</p>
<div id="forward"></div>

javascript source :


function forward() {
  Demo.getInclude(function(data) {
    dwr.util.setValue("forward", data, { escapeHtml:false });
  });
}


 

Java Source :

package org.getahead.dwrdemo.simpletext;

import! java.io.IOException;
import! javax.servlet.ServletException;
import! org.directwebremoting.WebContext;
import! org.directwebremoting.WebContextFactory;

public class Demo {
    public String getInclude() throws ServletException, IOException {
        WebContext wctx = WebContextFactory.get();
        return wctx.forwardToString("/simpletext/forward.html");
    }
}

dwr.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://getahead.org/dwr/dwr20.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="Demo">
      <param name="class" value="org.getahead.dwrdemo.simpletext.Demo"/>
    </create>
  </allow>
</dwr>

'WEB_Programming > DWR' 카테고리의 다른 글

Dynamically Updating Text  (0) 2008.06.10
Getting Started with DWR  (0) 2008.06.10
DWR: Easy AJAX for JAVA  (0) 2008.06.10