DWR

오픈소스 비즈니스 컨설팅
Pnuskgh (토론 | 기여)님의 2010년 9월 24일 (금) 17:33 판 (→‎JSON Simple)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 가기 검색하러 가기

JavaScript Framework인 DWR(Direct Web Remoting)을 정리 한다.


DWR 설정

  • dwr.jar 파일을 /WEB-INF/lib/ 폴더에 복사 한다.
  • commons-logging-1.1.1.jar 파일을 /WEB-INF/lib/ 폴더에 복사 한다.
  • json_simple-1.1.jarr 파일을 /WEB-INF/lib/ 폴더에 복사 한다.
  • /WEB-INF/web.xml에 다음을 추가 한다.
 <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>
  • /WEB-INF/classes/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="ContactService"> 
      <param name="class" value="com.jopenbusiness.gae.smartycontact.service.ContactService"/>
    </create>
    <convert converter="bean" match="com.jopenbusiness.gae.smartycontact.vo.ContactVO"/>
  </allow>
</dwr>
  • ContactService.java 파일을 생성 한다.
package com.jopenbusiness.gae.smartycontact.service;

import org.json.simple.JSONObject; 

public class ContactService {
 	public JSONObject getHello() {
		JSONObject obj = null;
		 
		obj = new JSONObject(); 
		obj.put("name", "Hello World!");
		return obj;
	}
}
  • 자동 생성되는 JavaScript 파일
<script type="text/javascript" src="/dwr/engine.js"></script>
<script type="text/javascript" src="/dwr/interface/ContactService.js"></script>

Server Program

JSON Simple

  • json_simple.jar
  • JSONObject
  • import org.json.simple.JSONObject;
  • JSONObject result = new JSONObject();
  • result.put("list", ~);
  • result.toString();
  • JSONArray
  • import org.json.simple.JSONArray;
  • JSONArray list = new org.json.simple.JSONArray();
  • list.add(tempObj); //--- GAE에서는 list.put(tempObj)을 사용 한다.
  • arg (문자열)을 파싱
  • 주의 : 전달되는 문자열이 "name":"value" 형태일 때만 파싱된다. name:value는 파싱되지 않는다.
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

               //--- 간단한 방법
		opt = (JSONObject) JSONValue.parse(arg);
 
               //--- 복잡한 방법
		Object obj = null;
		try {
			obj = parser.parse(arg);
			opt = (JSONObject)obj;
		} catch (ParseException e) {
			e.printStackTrace();
		}
  • Google App Engine에 있는 JSON Simple로 파싱
import com.google.appengine.repackaged.org.json.JSONArray;
import com.google.appengine.repackaged.org.json.JSONException;
import com.google.appengine.repackaged.org.json.JSONObject;

JSONObject obj = new JSONObject("JSON_문자열");
JSONObject menu = obj.getJSONObject(name);  //--- obj.get(name);
String id = obj.getString(name);
JSONArray list = obj.getJSONArray(name);

참고 문헌