Top Banner
전전전전 전전전전전 전전 전전 – JSON View 전전 . EMS 2 Team 전전전 전전
21

Json view 예제 설명

Dec 05, 2014

Download

Technology

Hyung Eun Jin

전자정부프레임워크를 이용한 JSON View.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Json view 예제 설명

전자정부 프레임워크대시 보드 – JSON View 예제 .

EMS 2 Team진형은 사원

Page 2: Json view 예제 설명

1. 패키지 구성도 소개 (java, resource, webapp).

2. JSON View 관련 예제 소개 .

3. 상세 설명 . 3-1. Controller, Service, DAO 관련 . 3-2. Sql 관련 (Ibatis) 관련 .

Page 3: Json view 예제 설명

1-1. 패키지 구성도 (Src/main/java)

com.nkia.dashboard.sample.service

• Sample 패키지 관련 Service Interface.• Sample 패키지 관련 VO 객체 .

com.nkia.dashboard.sample.service.impl

• Sample 패키지 관련 Service Interface 구현 .• Sample 패키지 관련 DAO 객체 .

Com.nkia.dashboard.sample.web

• Sample 패키지 관련 Controller 구현 .

Page 4: Json view 예제 설명

1-2. 패키지 구성도 (Src/main/resources) (1)

1

Egovframework.egovProps

• 전자정부 프레임워크가 사용하는 구성 리소스 모음입니다 .Ex) DB 계정정보 , File Upload 경로 등 .

Egovframework.message

• 전자정부 프레임워크가 사용하는 메시지 , 리소스 모음입니다 .Ex) 버튼 문자열 , 알림 문자열 리소스 관리 .( 국제화 )

Egovframework.spring

• Spring 관련 설정 파일 . 각 종류 별로 분류 .• JSON 한글 View 처리를 위해 context-common.xml 하단에 AnnotationMethodHandlerAdaptor 설정이 추가되었습니다 . (UTF-8 지정 ).Ex) 그외 AOP 관련 설정 파일 (context-aspect.xml)Ibatis SqlMap 관련 (Context-sqlMap.xml)

Page 5: Json view 예제 설명

1-2. 패키지 구성도 (Src/main/resources) (2)

Egovframework.sqlmap.config

• DB 종류 별로 sqlMapConfig 파일 지정 .• Ex) 현재 예제 파일(sql-map-config-oracle-sample.xml) 추가하였습니다 .

Egovframework.sqlmap.com

• 실제 ibatis 가 사용하는 DB 종류별 Query 가 들어있는 XML 경로입니다 .• Ex) nkia.sample 경로에 예제 파일(Sample_SQL_Oracle.xml) 을 추가하였습니다 .

Egovframework.validator

• 전자정부 프레임워크가 사용하는 검증처리 (Validation) 관련 설정 파일 .

Page 6: Json view 예제 설명

1-3. 패키지 구성도 (Src/main/webapp)

Css , images, js

• 사용하는 기본 CSS, Image 파일 및 javascript 파일 경로 .

WEB-INF/jsp/egovframework

• 전자정부 프레임워크가 사용하는 공통 컴포넌트 관련 JSP.

WEB-INF/jsp/nkia

• 엔키아가 사용하는 Dashboard 관련 JSP 경로 .

Page 7: Json view 예제 설명

1. 패키지 구성도 소개 (java, resource, webapp).

2. JSON View 관련 예제 소개 .

3. 상세 설명 . 3-1. Controller, Service, DAO 관련 . 3-2. Sql 관련 (Ibatis) 관련 .

Page 8: Json view 예제 설명

2. JSON View 관련 예제 소개 .예제 메인 화면 입니다 . 1. DB 에서 가져와서 (Select) 객체 (VO) 를 JSON 으로 변환하는 방법 . 2. DB 에서 가져와서 (Select) Map 을 JSON 으로 변환하는 방법 .

JSON 뷰 화면을 제공하는 방법 2 가지로 예제를 만들었습니다 .

Page 9: Json view 예제 설명

2. JSON View 관련 예제 소개 .예제 메인 화면 입니다 . 각 화면 조회 시 JSON 뷰 화면을 제공하는 것을 보실 수 있습니다 .

Query 조회 : SELECT 'HELLO WORLD' AS MESSAGE ,' 한글지원여부 ' AS MESSAGE_KO ,10 AS NUMBERSFROM DUAL

JSON 결과 : message : String. message_ko : String. number : Integer.

Page 10: Json view 예제 설명

2. JSON View 관련 예제 소개 .예제 메인 화면에 대한 HTTP Header 입니다 . (Chrome 개발자도구 )

아래 보이는 결과와 같이 , JSON(application/json) 이며 , UTF-8 로 제공하는 것을 볼 수 있습니다 .

Page 11: Json view 예제 설명

1. 패키지 구성도 소개 (java, resource, webapp).

2. JSON View 관련 예제 소개 .

3. 상세 설명 . 3-1. Controller, Service, DAO 관련 . 3-2. Sql 관련 (Ibatis) 관련 .

Page 12: Json view 예제 설명

3-1. Controller, Service, DAO 상세 설명 .앞서 패키지 구성도에서 말씀 드렸지만 ,Controller, Service, DAO 에 대한 진행 순서 및 관계 설명입니다 .

Controller

View(ex JSP, JSON)

Service

DAO DB

사용자( 브라우저 ) URL

사용

사용

조회

1. 2.

3.

4.

5.사용자에게 결과 반환 (view)

1. 사용자가 URL 을 통해 정보 요청 (ex http://localhost:7070/dashboard/nkia/sampleview.do)

2. Controller 에서는 URL 에 매핑 된 메소드가 실행 후(@RequestMapping), 서비스를 통해 정보 검색 서비스 요청 .

3. Service 는 DB 와 통신역할을 하는 DAO 에게 정보 검색 요청 .

4. DAO 는 ibatis 를 통해 DB Query 조회 – 결과 반환 .

5. Controller 는 받은 결과를 사용자에게 전달하기 위한 View 를 지정하여 (JSP 또는 JSON 형태 ) 결과를 사용자에게 전달합니다 .

Page 13: Json view 예제 설명

3-1. Controller, Service, DAO 상세 설명 .,Controller, Service, DAO 에 대한 진행 순서도 및 패키지 구성 현황입니다 .

Controller

View(ex JSP, JSON)

Service

DAO DB

사용자( 브라우저 ) URL

사용

사용

조회

1. 2.

3.

4.

5.사용자에게 결과 반환 (view)

Page 14: Json view 예제 설명

3-1-1. Controller 상세 설명 .• @Controller : Controller 선언은 최상 단 @Controller 로 지정합니다 .

• @Autowired : Service 를 사용하고 싶은 경우 , 해당 객체를 자동 주입 해줍니다 . ( 단 , 해당 @Autowired 할 Type 의 객체는 Bean 등록 설정이 되어 있어야합니다 .)

• @RequestMapping(“URL 경로” ) : URL 과 실행 될 메소드를 연결해주는 역할 .( 매핑 할 메소드 설정 .)

• 반환객체 (String): String 으로 반환할 경우 , src/main/webapp/WEB-INF/jsp 부터시작하여 String 으로 지정한 view 경로의 jsp 를 찾습니다 .

• 반환객체 (ResponseEntity): JSON 으로 반환하고 싶은 경우 , 반환 객체를 ResonseEntity<String> 로 하고 , JSONResponseUtil.getJSONResponse( 변환 시킬 객체 ) 메소드를 사용하면 됩니다 .

또는 @ReponseBody 를 추가하고 반환할 객체를 지정하면 ,자동으로 JSON 으로 변환 됩니다 . 자세한 설명은 뒤에서 추가로 설명하겠습니다 .

Ex) Public @ResponseBody Map sampleRetrunMapToJSON(){ // 생략}

Page 15: Json view 예제 설명

3-1-2. Service 상세 설명 .

• 인터페이스 (..service 패키지 ) 를 만든 후 , 구현(..service.impl 패키지 ) 하는 방식입니다 .

• @Service(“ 서비스명” ): 서비스 선언의 경우 ( 빈 등록 ) @Service(“ 서비스명” ) 을 사용합니다 .

• @Resource(name=“DAO 명” )DAO 사용에 대한 선언은 @Resource(name=“DAO 명” ) 을 통해 지정합니다 .

• extends AbstractServiceImpl: 전자정부프레임워크에서 예외 처리 , 로그 관리에 대해 도움을 제공하는 서비스 관련 추상 객체입니다 .

Page 16: Json view 예제 설명

3-1-3. DAO 상세 설명 .

• @Repository(“DAO 명” ) : DAO 선언의 경우 @Repository(“DAO 명” ) 을 지정합니다 .

• EgovComAbstractDAO : EgovComAbstractDAO 는 ibatis 기능을 좀 더 편리하게 제공해주는 추상객체입니다 .: 전자정부프레임워크가 제공하는 EgovComAbstractDAO 객체를 상속받아 구현합니다 .

• Ibatis 를 통해 쿼리를 실행할 Key 값을 지정합니다 .

Page 17: Json view 예제 설명

3-1-3. SQLMap(ibatis) 상세 설명 .

• Src/main/resource/sqlmap/config - SQL Map Config 는 실제 쿼리를 실하는 SQL 관련 XML 을 관리하는 XML - 즉 , 실제 Query 를 사용하는 XML 의 상위 관리 개념으로 이해하시면 되겠습니다 .

- 실제 Query 가 있는 SQL XML 을 관리용으로 사용 . - 실제 Query 가 있는 SQL XML 의 위치를 지정 .

* 위의 파일은 Src/main/resource/sqlmap/config/oracle/sql-map-config-oracle-sample.xml 입니다 .

Page 18: Json view 예제 설명

3-1-3. SQLMap(ibatis) 상세 설명 .

• Src/main/resource/sqlmap/com - 실제 Query 관련 XML. - DB Query 결과를 가져올 경우 반환될 객체 지정 . - 그외 Insert/Update/delete 일 경우 , 각 태그 바뀜 .

ex) insert 일 경우 <insert id=“SampleDAO.insert..”>

* 위의 파일은 Src/main/resource/sqlmap/com/nkia/sample/Sample_SQL_Oracle.xml 입니다 .

Page 19: Json view 예제 설명

3-1-4. JSONResponseUtil 상세 설명 .

• Controller 에서 JSON 결과로 반환하고자 할때에는ResponseEntity<String> 객체로 반환해주면 됩니다 .

• 해당 유틸의 진행방식은1. 공통적으로 지정하는 JSON 형태의 String 객체로 변환 .2. Response Header 의 Content-Type 을 JSON 으로 지정 .3. 한글 깨짐에 의한 UTF-8 지정하여 반환 .

• 단순히 JSON 형태의 문자열이 필요한 경우는 아래 메소드를 사용하시면 됩니다 .

Page 20: Json view 예제 설명

ETC. Maven 설정 .

<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version></dependency> <dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-core-asl</artifactId><version>1.9.13</version></dependency> <dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency>

JSON 관련 패키지 추가했으나 ,국방 메가센터의 경우 , 인트라넷이라 Maven Repository 설정을어떻게 하는지 문의 해봐야할 듯 합니다 .

일단 추가한 Library 목록 입니다 .

Page 21: Json view 예제 설명

PS. JSON View 생성 방법 추가 ..

• 앞서 설명해드린 방식 (ResponseEntity) 보다• 편한 방식이 있어 말씀 드립니다 .

• JSON View 로 만들 필요가 있을 경우 ,• 반환 객체에 @ResponseBody 만 붙이면• JSON View 로 자동 변환됩니다 .• 따라서 좀더 유연한 개발이 가능합니다 .

• 결론 )• ResponseEntity 방식과 , 지금 방식의 결과는• 동일하지만 , 때문에 둘 중에 좀더 편하신 방법으로• 개발하시면 될 듯합니다 .