2. 1. 패키지 구성도 소개(java, resource, webapp).
2. JSON View 관련 예제 소개.
3. 상세 설명.
3-1. Controller, Service, DAO 관련.
3-2. Sql 관련(Ibatis) 관련.
3. 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 구현.
4. 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)
5. 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) 관련 설정 파일.
6. 1-3. 패키지 구성도 (Src/main/webapp)
Css , images, js
• 사용하는 기본 CSS, Image파일 및 javascript 파일 경로.
WEB-INF/jsp/egovframework
• 전자정부 프레임워크가 사용하는 공통 컴포넌트 관련 J
WEB-INF/jsp/nkia
• 엔키아가 사용하는 Dashboard관련 JSP 경로.
7. 1. 패키지 구성도 소개(java, resource, webapp).
2. JSON View 관련 예제 소개.
3. 상세 설명.
3-1. Controller, Service, DAO 관련.
3-2. Sql 관련(Ibatis) 관련.
8. 2. JSON View 관련 예제 소개.
예제 메인 화면 입니다.
1. DB에서 가져와서(Select) 객체(VO)를 JSON으로 변환하는 방법.
2. DB에서 가져와서(Select) Map을 JSON으로 변환하는 방법.
JSON 뷰 화면을 제공하는 방법 2가지로 예제를 만들었습니다.
9. 2. JSON View 관련 예제 소개.
예제 메인 화면 입니다.
각 화면 조회 시 JSON 뷰 화면을 제공하는 것을 보실 수 있습니다.
Query 조회:
SELECT
'HELLO WORLD' AS MESSAGE
,'한글지원여부' AS MESSAGE_KO
,10 AS NUMBERS
FROM DUAL
JSON 결과:
message : String.
message_ko : String.
number : Integer.
10. 2. JSON View 관련 예제 소개.
예제 메인 화면에 대한 HTTP Header 입니다. (Chrome 개발자도구)
아래 보이는 결과와 같이, JSON(application/json)이며, UTF-8로
제공하는 것을 볼 수 있습니다.
11. 1. 패키지 구성도 소개(java, resource, webapp).
2. JSON View 관련 예제 소개.
3. 상세 설명.
3-1. Controller, Service, DAO 관련.
3-2. Sql 관련(Ibatis) 관련.
12. 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형태) 결과를
사용자에게 전달합니다.
13. 3-1. Controller, Service, DAO 상세 설명.
,Controller, Service, DAO에 대한 진행 순서도 및 패키지 구성 현황입니다.
Controller
View
(ex JSP, JSON)
Service
DAO DB
사용자
(브라우저)
URL
사
용
사
용
조
회
1. 2.
3.
4.
5.
사용자에게 결과 반환(view)
14. 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
JSONResponseUtil.getJSONResponse(변환 시킬 객체) 메소드
또는 @ReponseBody를 추가하고 반환할 객체를 지정하면,
자동으로 JSON으로 변환 됩니다. 자세한 설명은 뒤에서 추
Ex)
Public @ResponseBody Map sampleRetrunMapToJSON(){
//생략
15. 3-1-2. Service 상세 설명.
• 인터페이스(..service 패키지)를 만든 후, 구현
(..service.impl 패키지)하는 방식입니다.
• @Service(“ 서비스명”)
: 서비스 선언의 경우(빈 등록) @Service(“서비스명”)을 사용합
• @Resource(name=“DAO명”)
DAO 사용에 대한 선언은 @Resource(name=“DAO명”)을 통해
지정합니다.
• extends AbstractServiceImpl
: 전자정부프레임워크에서 예외 처리, 로그 관리에 대해 도움
하는 서비스 관련 추상 객체입니다.
16. 3-1-3. DAO 상세 설명.
• @Repository(“DAO명”)
: DAO선언의 경우 @Repository(“DAO명”)을 지정합니다.
• EgovComAbstractDAO
: EgovComAbstractDAO는 ibatis기능을 좀 더 편리하게 제공해주는 추상객체입니다.
: 전자정부프레임워크가 제공하는 EgovComAbstractDAO 객체를 상속받아 구현합니다.
• Ibatis를 통해 쿼리를 실행할 Key값을 지정합니다.
17. 3-1-3. SQLMap(ibatis) 상세 설명.
• Src/main/resource/sqlmap/config
- SQL Map Config는 실제 쿼리를 실하는 SQL관련 XML을 관리하
-즉, 실제 Query를 사용하는 XML의 상위 관리 개념으로 이해하
- 실제 Query가 있는 SQL XML을 관리용으로 사용.
- 실제 Query가 있는 SQL XML의 위치를 지정.
*위의 파일은
Src/main/resource/sqlmap/config/oracle/sql-map-config-oracle-sample.xml 입니다.
18. 3-1-3. SQLMap(ibatis) 상세 설명.
• Src/main/resource/sqlmap/com
- 실제 Query 관련 XML.
- DB Query결과를 가져올 경우 반환될 객체 지정.
- 그외 Insert/Update/delete 일 경우, 각 태그 바뀜.
ex) insert일 경우 <insert id=“SampleDAO.insert..”>
19. 3-1-4. JSONResponseUtil 상세 설명.
• Controller에서 JSON 결과로 반환하고자 할때에는
ResponseEntity<String> 객체로 반환해주면 됩니다.
• 해당 유틸의 진행방식은
1. 공통적으로 지정하는 JSON형태의 String객체로 변환.
2. Response Header의 Content-Type을 JSON으로 지정.
3. 한글 깨짐에 의한 UTF-8 지정하여 반환.
• 단순히 JSON형태의 문자열이 필요한 경우는
아래 메소드를 사용하시면 됩니다.
21. PS. JSON View 생성 방법 추가..
• 앞서 설명해드린 방식(ResponseEntity)보
• 편한 방식이 있어 말씀 드립니다.
• JSON View로 만들 필요가 있을 경우,
• 반환 객체에 @ResponseBody만 붙이면
• JSON View로 자동 변환됩니다.
• 따라서 좀더 유연한 개발이 가능합니다.
• 결론)
• ResponseEntity 방식과, 지금 방식의 결과
• 동일하지만, 때문에 둘 중에 좀더 편하신
• 개발하시면 될 듯합니다.