달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2012. 3. 22. 16:25

dwr 사용방법 I.lib()/I.lib(Java)2012. 3. 22. 16:25

.. .. ..

[펌] : http://innoc99.blog.me/140046778698

Eclipse에서 Web Project 생성.

Project Name : DWR-Test

dwr.jar 파일을 Project내의 WEB-INF/lib에 넣어준다.

(첨부파일에서는 -leepcs 부분을 지운후에..)

web.xml에 아래 내용 추가.

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<!-- If you are using DWR 1.x then servlet-class line shoud contain the following -->
<!-- uk.ltd.getahead.dwr.DWRServlet -->

<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 버전이 1.x라면 uk.ltd로 시작하는것을 servlet-class로 적어주어야만 한다. 무조건.

dwr.xml 만들기.

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

<dwr>
<allow>
<create creator="new" javascript="HelloTest" >
<param name="class" value="dwr.test.SimpleText"/>
<include method="hello"/>
</create>
</allow>
</dwr>

creator에 new라는 것은 객체를 만들어서 사용한다는 것이고.. HelloTest는 jsp나 html에서 객체의 이름으로 사용할 것을 적는당.

param의 class란 java파일이므로 class라 한 것이고... value의 dwr.test.SimpleText는 java파일의 경로를 적은 것.

hello란 것은 SimpleText Class의 메소드로 hello가 있다는 것을 정의해준 것.(그냥 쓸거 정의하면 됨..)

SimpleText.java 만들기

src 아래에 패키지 만들기를 통해 dwr.test를 만든 후 test 아래에 SimpleText class를 만든다.

package dwr.test;

public class SimpleText {

public String hello(String value){
return "Hello ~ "+value;
}

}

hello는 dwr.xml에서 정의한 것(자신이 쓸 메소드)과 일치시켜주면 된다.

이제 톰캣에 Project를 올리고 서버를 실행시킨후에

http://localhost:{your_port}/{your_app}/dwr/

위 주소로 들어가게 되면 dwr.xml에 정의했던 Class 목록이 나오게 된다.

위와 똑같이 했다면 이런 화면....

그리고 HelloTest를 눌러보면은.. 아래와 같이 나오게 된다..

위 그림에서 보면 script 구문이 3줄이 있다.

DWR이 알아서 저걸 만들어 준다는 것이다.

그리고 그 아래에는 Test를 할 수 있는 부분이 있다.

WebContent/index.jsp 만들기.

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<!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=EUC-KR">
<title>Insert title here</title>
<script type='text/javascript' src='/DWR-Test/dwr/interface/HelloTest.js'></script>
<script type='text/javascript' src='/DWR-Test/dwr/engine.js'></script>
<script type='text/javascript' src='/DWR-Test/dwr/util.js'></script>
<script type="text/javascript">
function test(){
var value = dwr.util.getValue('demo');
//var value = document.getElementById('demo').value;
HelloTest.hello(value,

function(data) { dwr.util.setValue("here", data); }

);

}
</script>
</head>
<body>
<input type="text" value="" size="20" id='demo'>
<input type="button" value="send" onclick="test()"/>
<br>
<input type="text" id="here" value=""/>
</body>
</html>

send를 클릭하게 되면 JavaScript의 test() function이 호출이 된다.

test에서는 demo에 적혀진 text를 value로 저장해 DWR에서 정의한 객체(HelloTest)의 메소드(hello)를 호출한다.

그런데 hello 메서드를 보게 되면 매개변수가 하나 였는데 script내에서는 2개이다..

why?

이를 callback function이라 하는데, return값이 있다면 return 값을 처리하는 함수이다.

왜 저렇게 쓰냐고 하면... 그냥 간단히 하기 위해서??

왜 복잡한지 궁금하다면..

function test(){

var value = dwr.util.getValue("demo");

HelloTest.hello(value, cb_function);

}

function cb_function(data){

dwr.util.setValue("here", data);

}

이렇게 사용하느니 그냥 줄여서 사용한다 이거다.

위 예제는 정말 간단하게 DWR 설명이 가능한 예제이다..

jsp -> Java로 가는 대부분의 과정을 DWR이 처리해주고 있다..

무분별한 사용은 금지..

데이터가 많을 경우 메모리 급상승 최악에는 서버가 죽어버린다..

아래 링크에서 확인할 수 있다.

http://javaora.tistory.com/109

.
:
Posted by .07274.