Json view 예제 설명

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

description

전자정부프레임워크를 이용한 JSON View.

Transcript of Json view 예제 설명

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 방식과 , 지금 방식의 결과는• 동일하지만 , 때문에 둘 중에 좀더 편하신 방법으로• 개발하시면 될 듯합니다 .