JPetStore 분석자료 1.0 Spring framework 작성자 : 김태완.

Slides:



Advertisements
Similar presentations
작성자조성웅 작성일자 기본환경 1. Java : Eclipse : Tomcat : 6.0 이상 4. DB : MySQL File System : DFS 6. Framework - Spring : JPA 및 CXF.
Advertisements

Web Programming 소개 인공지능 연구실. Artificial Intelligence Laboratory 목차  1. HTML5  2. 개발 환경 구축  3. JSP  4. 실습 2.
㈜유니윌취업연수프로그램. 신성장동력훈련 4 회사소개 1 청년취업아카데미 2 SW 융합 채용연수 사업 3 취업현황 5 Contents.
JSP 정리 레퍼런스: JSP 2.1 웹 프로그래밍 (최범균, 가메출판사). 목차 1. Directive - 인코딩 - 오류처리 2. Implicit Object - 쿠키/세션 3. Action Tag 4. JDBC/DBCP 프로그래밍, 파일업로드 5. Expression.
더존다스 경영전략과 비젼 1 ERP 개발부문
프로젝트 제안서 날씨대로 기분대로 팀원 박효민 신준범 정민섭 안성원
성공적 취업을 위한 청년취업아카데미 과정 소개 2012 년 4 월 청년취업아카데미 사업 소개 (1) 학부졸업 최소 70% ~100% 취업 최소 70% ~100% 취업 전국 대학의 학부 졸업 후 취업률 약 60% 청년취업아카데미 를 통한 맞춤형 취업교육프로그램.
성공적 취업을 위한 청년취업아카데미 과정 소개 2012 년 06 월 청년취업아카데미 사업 소개 (1) 학부졸업 최소 70% ~100% 취업 최소 70% ~100% 취업 전국 대학의 학부 졸업 후 취업률 약 60% 청년취업아카데미 를 통한 맞춤형 취업교육프로그램.
인터넷 쇼핑몰 구축 제안서.
- SW_Desing Study Group -
2009년 IT인재개발원 [연수생 모집요강]
Spring MVC ㅇ 스프링 MVC 구성요소 설명 DispatcherServlet 클라이언트의 요청을 컨트롤러에게 전달하고
Introduction to Django
DRIMS-Cloud 소개.
APPEON SOLUTION INTRODUCTION.
Web Server (JSP, Servlet 지원)
통합연구사업지원 정산 사용자 설명서 (기관사용자).
Chapter 14 : JSP 고급4. chapter 14 : JSP 고급4 학습목표 커스텀 태그 종류 JSTL ( JSP Standard Tag Library ) 사용자 커스텀 태그 커스텀 태그 작성 클래스 기반 커스텀 태그 작성 태그 파일 기반 커스텀 태그 작성.
Web Programming 강의 소개
공개소프트웨어란? “Open Source Software(공개SW)는 저작권자가 소스 코드를 개방하여 소스 코드의 수정, 재 배포가 자유로운 SW로 규정한다 공개소프트웨어는 전세계 개발자 누구나 참여하고 있는 커뮤니티 프로젝트로 개발되며, 브랜드를 달고.
Chapter-2. 개발환경 구축하기.
팀 명: Con Spirito 팀 원: 경주리 김다정 김소담 최은미
3 MVC모델을 이용한 웹 애플리케이션 작성.
1장. JSP 및 Servlet을 활용한 동적 웹 프로그래밍 소개 제1장.
1강 01장. 웹과 자바.
ASP 정 보 보 호 학 과 양 계 탁.
IOC, DI 2015 Web Service Computing.
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
NTAS 소개 (Network Transaction Application Server)
1. 시멘틱웹(Semantic Web) Preview 항목 상세내역 개요 기출여부 관련KeyWord 추천사이트
백기선 Springing into action 백기선
(Network Transaction Application Server)
Chapter 15 : Struts 프레임워크 1. chapter 15 : Struts 프레임워크 1.
전자정부 표준프레임워크 호환성 가이드 전자정부 표준프레임워크 운영유지보수 사업단.
28강. MVC패턴을 이용한 게시판 만들기-II FrontController 만들기 Command 만들기
웹 애플리케이션 개발 프레임워크와 스트러츠 웹 애플리케이션 기술 변천사를 이해한다
BAF Team IT Engineering Center
20강. 커넥션풀 DAO, DTO PreparedStatement 커넥션 풀(DBCP)
27강. MVC패턴을 이용한 게시판 만들기-I MVC패턴의 이해 전체적인 컴포넌트 설계 DB(DataBase) 생성
21강. 스프링JDBC JDBC를 이용한 반복코드 줄이기 Spring빈을 이용한 코드 간소화
웹 애플리케이션 로깅 및 오류 처리 기법 웹 애플리케이션 로깅의 필요성을 이해한다 로깅의 분류 및 구현 방안을 학습한다
SOAP 클라이언트 개발 Guide
ㅇ 스프링 설정파일 (dispatcher-servlet.xml)
JSP를 이용한 프로젝트관리 홈페이지 양진현 지 도 : 이형원 교수님.
JDBC (Java Database Connectivity)
11강. 스프링 MVC 기초 스프링 MVC 개요 스프링 MVC 구조 살펴보기 resources 폴더
9장 JSP페이지의 에러처리 이장에서 배울 내용 : JSP페이지에서 에러를 처리하는 방법에 대해 학습해본다. 에러페이지를 사용한 에러처리의 문제점을 살펴보고, 현재 JSP2.0에서 권장하는 에러 처리 형태인 에러코드별 에러처리를 하는 방법에 대해 학습한다.
컴퓨터응용과학부 Java Enterprize(DB) 제 7 주
JSP 개발 환경 소프트웨어 설치 JSP 개발 환경 설정 JSP 프로그램 입력 및 실행
Spring 프레임워크의 이해 2. Spring Introduction.
3. Spring 프레임워크의 IoC 컨테이너 개념
실용주의 개발 프로세스 및 개발 환경 박재성 2008년 4월 26일.
Spring 프레임워크의 이해 – day1 자바지기.
NTAS 소개 (Network Transaction Application Server)
학습목표 학습목표 본 장은 동시성 제어와 잠금(lock) 등 효과적인 트랜잭션 관리 기법 과 필요한 명령을 다룬다. 또한 데이터베이스의 장애에 대비하여 안전한 데이터의 관리를 위한 백업과 복원 기법, 서로 다른 DBMS 간이나 다른 서버 사이의 데이터 교환을 위한 데이터.
I S WORD 이재근, 김 진수.
CH2. ASP.NET 페이지 분석 HTML ASP ASP.NET 의 차이점.
3장. 웹로직 서버에서의 서블릿과 JSP의 운용 3-1. 서블릿, JSP를 실행하기 전의 환경 설정
통합연구사업지원 정산 사용자 설명서 (연구책임자).
2015년 디지털컨버전스 청년취업아카데미.
전자정부 표준프레임워크 호환성 가이드 (사)오픈플랫폼 개발자커뮤니티.
JSP와의 첫 만남 간간한 JSP 프로그램을 작성하면서 앞으로 학습에 필요한 과정을 익힌다.
Index.html example.xml test.action .class.java test.ibatis.
제 17 장 MVC 모델과 구현 학기 인터넷비즈니스과 강 환수 교수.
Architecture.
Spring Introduction.
Model2.
홈페이지 제안서
Web Server Install.
2.4 스프링 테스트 적용.
Presentation transcript:

JPetStore 분석자료 1.0 Spring framework 작성자 : 김태완

JPetStore란? JPetStore 어플리케이션은 클린턴 비긴Clinton Begin 이 만든 iBatis용 JPetStore를 기초로 만들어졌다. 전체 DAO계층을 포함하고 있으며 Spring, iBatis를 사용하여 Oracle, MS-SQL, MySQL, PostgreSQL를 지원한다. 비즈니스 계층은 전적으로 Spring으로 관리하고 DAO계층에 의존한다. Spring MVC, Struts, Spring Remoting, JAX-RPC도 포함되어 있다.

구동 및 테스트환경 Apache Tomcat 5.5 Eclipse Galileo IDE JDK 1.6 My-SQL 5.5 Spring 2.5.5 iBatis 2.3 본 문서는 JPetStore에서 WebService(Spring Remoting, JAX-RPC)와 관련된 부분과 Struts에 관련된 부분을 제외하고 작성되었다.

분석순서 화면분석 환경분석 흐름분석 소스분석 DB 분석

1. 화면분석 JPetStore의 화면 분석

메인화면 카테고리 목록 장바구니 로그인 검색

로그인화면

회원가입 장바구니에서 나의 관심동물 목록이 보임. 관심동물에 대한 배너정보가 보임.

상품목록

세부 상품목록

상품상세보기

장바구니

체크아웃

결제정보

배송 주소정보

주문서 확인

주문 완료

개인정보 수정

나의 구매목록

2. 환경분석 Spring 설정파일과 배포서술자에 대한 분석. iBatis설정에 대한 내용 추가.

Project 구성 DAO interface들 iBatis를 이용한 DAO 구현클래스들 iBatis 설정파일들 JavaBean들(직렬화 구현) Business Logic들 JAX-RPC/Axis 웹서비스 (확실하지 않음) JAX-RPC/Axis 웹서비스 클라이언트 Spring MVC의 Controller 구현클래스들 Struts의 Action 구현클래스들 JSP 파일들 Spring 설정파일들, 배포서술자, 프로퍼티파일들, iBatis 설정파일, 웹서비스 설정파일

Library 라이브러리 용도 jpetstore.jar JPetStore의 Class파일들. spring.jar Spring의 기본 라이브러리. Spring Core를 비롯하여 기본적인 라이브러리 내장. spring-webmvc.jar Spring MVC 라이브러리. commons-logging.jar 로깅에 관련되어 있으며 Spring 전반에 걸쳐 사용. aspectjweaver.jar @AspectJ 애스펙트를 Spring설정으로 사용하기 위함. commons-dbcp.jar, commons-pool.jar Spring에서 Jakarta DBCP(커넥션 풀)을 사용하기 위함. ibatis-2.3.2.715.jar iBatis 기본 라이브러리. jstl.jar JSTL 지원을 위해 필요함. j2ee 기본 라이브러리. standard.jar Jakarta의 JSTL 구현체. axis.jar, saaj-api.jar, wsdl4j.jar Apache Axis 프로젝트를 통해 JAX-RPC 리모팅을 사용하기 위함. jaxrpc.jar Spring 리모팅의 JAX-RPC를 사용하기 위해 필요한 j2ee 라이브러리. hessian-3.1.3.jar Spring 리모팅이 Caucho의 Hessian 프로토콜을 사용하기 위함. struts.jar Struts 기본 라이브러리. commons-beanutils.jar, commons-collections.jar, commons-digester.jar, commons-discovery.jar, commons-validator.jar Struts에서 사용하는 Jakarta Commons 프로젝트. hsqldb.jar JPetStore에서 hsqldb를 사용하기 위함. DB에 따라 필요없을 수 있음.

환경설정 파일명 용도 web.xml JPetStore 프로젝트의 배포서술자. applicationContext.xml JPetStore 전반에 걸친 공통 Bean 설정. Validator, Property, 퍼사드패턴을 이용한 Business Logic 집합 Bean, 트랜잭션 AOP 설정. dataAccessContext-local.xml JPetStore의 Data Access Layer. Database 접근에 관련된 공통 Bean 설정. DataSource 선언, 트랜잭션 매니저, iBatis 연동을 위한 SqlMapClient, 각 DAO 구현체 jdbc.properties DataSource 를 위한 DB 설정 프로퍼티. log4j.properties Log4J 설정 프로퍼티. petstore-servlet.xml JPetStore 의 기본 DispatcherServlet에 대한 설정. ViewResolver, HandlerMapping, 각종 명령에 대한 Controller Bean. sql-map-config.xml iBatis의 기본 설정파일. 각 SqlMap에 대한 설정파일의 위치 기록됨. dataAccessContext-jta.xml JNDI DataSource를 사용하여 두개의 DataBase에 접근하려 할 때 사용함. mail.properties 메일지원 프로퍼티. 내용 없음. remoting-servlet.xml Spring 리모팅을 위한 DispatcherServlet에 대한 설정. via Hessian, Burlap, Spring’s HTTP invoker에 대한 Bean. server-config.wsdd Axis에 대한 Server 설정인듯. 불명확함. struts-config.xml Spring MVC가 아닌 Struts를 사용할 때의 설정 파일

배포서술자 web.xml Root 디렉토리를 절대가 아닌 상대디렉토리로 쓰기 위한 파라미터 Log4J 의 설정파일 위치 Spring의 Context 설정파일 위치 서로 다른 DIspatcherServlet이 공통 빈을 필요로 하는 경우 사용. ContextLoaderListener 를 ServletListener로 등록하고 contextConfigLocation 컨텍스트 파라미터를 이용하여 공통으로 사용될 빈 정보를 담고 있는 설정 파일 목록을 지정. 서블릿의 이름과 클래스를 설정. DispatcherServlet은 WEB-INF/ 디렉토리에 위치한 [서블릿이름]-servlet.xml 파일을 기본 스프링 설정 파일로 사용함.

applicationContext.xml XML Schema 기반의 설정 해당 클래스를 빈으로 등록하면 외부의 프로퍼티 파일에 저장된 정보를 Spring 설정 파일에서 사용할 수 있게 된다. (고유) : 요구값이 부족할 경우 Error를 리턴하도록 작성된 Validator Bean. (고유) : Business Logic의 집합체. 퍼사드 패턴을 이용하여 PetStoreFacade를 구현하고 있음. 각각의 DAO구현체를 DI받는다. PetStoreFacade 인터페이스의 모든 메소드를 pointcut으로 물고있음. 선언적 트랜잭션. insert* , update* : insert와 update문자가 앞에 붙은 메소드가 수행될 때 트랜잭션이 발동 * : 위의 메소드를 제외한 나머지 메소드가 수행될 때 read-only 형태의 트랜잭션이 발동

dataAccessContext-local.xml DTD기반의 설정. Apache의 Common 라이브러리를 이용하여 커넥션풀을 잡는 dataSource 빈을 설정. PropertyPlaceholderConfigurer 에서 설정된 외부 프로퍼티 파일에서 해당 값을 로딩. 트랜잭션 관리자. dataSource 프로퍼티를 사용하여 전달받은 DataSource로부터 Connection을 가져온 뒤, Connection의 commit(), rollback() 등의 메소드를 이용하여 트랜잭션을 관리 Spring과 iBatis를 쉽게 연동하기 위해 SqlMapClient를 Bean으로 설정시켜주는 클래스. dataSource, configLocation (iBatis 설정파일 위치)이 필요함. iBatis를 이용한 각 DAO구현 Bean.

petstore-servlet.xml - 1 JSP나 HTML 파일과 같이 웹 어플리케이션의 내부 자원을 이용하여 뷰를 생성. 컨트롤러가 지정한 뷰 이름으로부터 실제로 사용될 뷰를 선택 JstlView : JSTL을 사용하여 뷰를 구현 URL과 일치하는 이름을 갖는 빈을 컨트롤러로 사용함. 다수의 핸들러매핑을 동시에 설정하게 되면 order 프로퍼티에 적힌 순서대로 실행하며 order 프로퍼티값이 없을 경우 설정 파일에 입력한 순서에 따라 매핑되는 컨트롤러를 검색함. DB연동이나 별도의 처리 없이 뷰 페이지를 바로 보여주고 싶을 경우, 정적인 뷰를 제공하고 싶은 경우에 사용

petstore-servlet.xml - 2 가장 많이 사용되는 HandlerMapping. 패턴 매칭을 이용하여 매핑. 여기서는 보안에 관련된 매핑을 하기 위해 두번째 HandlerMapping으로 설정되었슴. 요청 가로채기. 요청을 처리하기 전과 처리한 후에 알맞는 기능을 수행.

Database 설정 with iBatis dataAccessContext-local.xml applicationContext.xml jdbc.properties Next Page

Database 설정 with iBatis sql-map-config.xml Next Page

Database 설정 with iBatis iBatis 사용 Example

3. 흐름분석 JPetStore의 웹 흐름 분석. 내부 Model부의 흐름 분석. 주요 Controller에 대한 세부 분석. 정확한 흐름이 아닌 이해가 편한 형태로 분석되었음.

JPetStore 요청 정리 SignOn 확인. SignOnInterceptor 설정. 요청 Controller 종류 설명 /shop/index.do 없음. 정적인 뷰 제공. JPetStore의 메인화면으로 가기 위한 요청. /shop/newAccount.do SimpleFormController 회원가입 폼 제공. 폼 Validator. 회원가입. /shop/editAccount.do 회원정보 수정 폼 제공. 폼 Validator. 회원정보 수정. /shop/signonForm.do 로그인 화면 폼. /shop/signon.do Controller 로그인. /shop/signoff.do 로그아웃. /shop/viewCart.do 장바구니 목록. /shop/viewCategory.do 카테고리 목록. /shop/viewProduct.do 해당 카테고리의 상품 목록. /shop/viewItem.do 상품상세정보 화면. /shop/searchProducts.do 상품검색 목록. /shop/addItemToCart.do 장바구니에 해당 상품 추가. /shop/checkout.do 선택한 상품을 체크아웃함. 주문요청함. /shop/removeItemFromCart.do 장바구니목록에서 상품 제거. /shop/updateCartQuantities.do 장바구니에서 해당 상품의 구매 요청 갯수 갱신. /shop/newOrder.do AbstractWizardFormController 상품 주문. 주문정보 추가. 폼 Validator. /shop/listOrders.do 로그인된 회원의 주문 목록. /shop/viewOrder.do 주문상세정보 화면. SignOn 확인. SignOnInterceptor 설정.

Project 실행 흐름 HandlerMapping 1 BeanNameUrlHandlerMapping Controller org.springframework.samples. jpetstore.web.spring HandlerMapping 2 SimpleUrlHandlerMapping 4. 처리 요청 3. 해당 Controller Bean 리턴 5. ModelAndView 리턴 (View 이름) 2. Controller 검색 및 요청 1. Request(*.do) DispatcherServlet Client 8. Response 생성 요청 6. View 검색 및 요청 7. View 리턴 ViewResolver InternalResourceViewResolver JSP WEB-INF/jsp/spring

Model부 실행 흐름 Controller ... DAO ... Transaction with AOP 자체처리 처리요청 AccountFormController SignonController ViewCartController ViewCategoryController OrderFormController ... DAO AccountDao SqlMapAccountDao CategoryDao SqlMapCategoryDao ItemDao ... SqlMapItemDao 자체처리 처리요청 Transaction with AOP PetStoreFacade PetStoreImpl DB처리 ModelAndView

요청흐름 : 정적인 View 예제 http://localhost:8080/jpetstore/shop/index.do 1. petstore-servlet.xml 2. JSP

요청흐름 : Controller 구현체 예제 http://localhost:8080/jpetstore/shop/viewCategory.do?categoryId=FISH 1. petstore-servlet.xml applicationContext.xml Next Page

요청흐름 : Controller 구현체 예제 http://localhost:8080/jpetstore/shop/viewCategory.do?categoryId=FISH Next Page

요청흐름 : Controller 구현체 예제 http://localhost:8080/jpetstore/shop/viewCategory.do?categoryId=FISH 2. PetStoreImpl.class Next Page

요청흐름 : Controller 구현체 예제 http://localhost:8080/jpetstore/shop/viewCategory.do?categoryId=FISH 3. SqlMapCategoryDao.class Category.xml Next Page