자바 웹 개발 시작하기 (4주차 : mvc)

23
자바 개발 시작하기 (4주차 : MVC) 2011. 11. 16 DEVELOPMENT #2 이덕곤

Upload: dk-lee

Post on 18-Dec-2014

697 views

Category:

Technology


7 download

DESCRIPTION

Java web development 04 자바 웹 개발 시작하기 (4주차 : MVC) 2011. 11. 16 벌써 2년도 넘은 자료지만 그래도 필요하신분이 있을지 몰라서... (지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ)

TRANSCRIPT

Page 1: 자바 웹 개발 시작하기 (4주차 : MVC)

자바 웹 개발 시작하기 (4주차 : MVC) 2011. 11. 16

DEVELOPMENT #2

이덕곤

Page 2: 자바 웹 개발 시작하기 (4주차 : MVC)

§  인터넷과 웹 어플리케이션의 이해

§  스프링 웹 개발

§  RESTful (REpresentational State Transfer)

§  컨트롤러 (UrlRewrite)

§  뷰, 표현방법 : JSP, EL, JSTL

§  JSON : Gson

Page 3: 자바 웹 개발 시작하기 (4주차 : MVC)

§  HTML5에서 PUT와 DELETE사용 불가 §  HTML5에서 put/delete는 사용하지 못한다고 나옴

§  http://www.w3.org/TR/html5-diff/

§  Using PUT and DELETE as HTTP methods for the form element is no longer supported.

§  추가 참고 주소 §  Form의 method의 PUT과 DELETE의 지원에 대해서

§  http://lists.w3.org/Archives/Public/public-html-ig-ko/2010Nov/0043.html

Page 4: 자바 웹 개발 시작하기 (4주차 : MVC)

§  MVC 심층학습

§  모델

§  데이터

§  POJO (Plain Old Java Object)

§  스프링 MVC

Page 5: 자바 웹 개발 시작하기 (4주차 : MVC)

§  Model, View, Controller §  사용자

인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다

Page 6: 자바 웹 개발 시작하기 (4주차 : MVC)

Spring MVC

org.springframework.web.servlet.DispatcherServlet

Interceptor 1

Interceptor 2

Interceptor 3

Interceptor 3

Interceptor 2

Interceptor 1

Template - JSP - Velocity -  Freemarker

IoC Container

JDBC ORM

applicationContext.xml

action-servlet.xml

Business Object DAO

HttpServletRequest

HttpServletResponse

Page Control - dispatch - redirect

Page 7: 자바 웹 개발 시작하기 (4주차 : MVC)

Model

Domain Model

=

+

Business Obj +

DAO

§  MVC 패턴에서의 의미 §  애플리케이션의 정보(데이터)

§  웹 서비스 개발에서의 의미

§  데이터를 처리하는 일련의 과정

§  비즈니스 로직을 표함(복잡한 계산 등의 처리)

§  데이터를 담는 저장소와 통신

§  저장소에 데이터를 저장하고 불러오고 조작하는 처리

§  일반적인 자바 객체(POJO)에 정보를 담는다

Page 8: 자바 웹 개발 시작하기 (4주차 : MVC)

§  Plain Old Java Object : 평범하고 오래된 자바 객체

§  Martin Fowler §  http://www.martinfowler.com/bliki/POJO.html

§  자바개발자가 마음대로 정의 할 수 있는 객체

§  Servlet과 EJB와 같이 특정 Interface(Contracts) 에 종속적이지 않은 모든 자바 클래스

§  Object를 간단히 super클래스로 둔 평범한 순수 자바클래스 (흔히 “자바 빈”이라 불린다)

Page 9: 자바 웹 개발 시작하기 (4주차 : MVC)

§  자바빈즈(JavaBeans)란? §  자바로 작성된 소프트웨어 컴포넌트이다.

§  가시적으로 조작이 가능하고 또한 재사용이 가능한 소프트웨어 컴포넌트

§  자바빈즈의 구성 §  생성자

§  멤버 필드

§  데이터 저장을 위한 set~ 형태의 멤버 메소드

§  데이터 추출을 위한 get~ 형태의 멤버 메소드

Page 10: 자바 웹 개발 시작하기 (4주차 : MVC)

§  light-weight(possibly) : 가볍게

§  fiexible : 유연성

§  simple : 간단 명료

§  즉, Spring, Hiberate, Ibatis 등에서 객체를 가볍게, 간단히 유연하게 어떤 Object에 대해 추상화 할 수 있는 객체를 만들어야 함

Page 11: 자바 웹 개발 시작하기 (4주차 : MVC)

§  마틴 파울러가 2000년 가을에 열렸던 어느 발표를 준비하면서 처음 만들어낸 말

§  마틴 파울러는 EJB(Enterprise JavaBean) 대신 레귤러 자바 객체로 개발 하는 것이 얼마나 이로운지를 설명하였는데 처음에 사람들이 이 말을 귀 기울여 듣지 않았다. 왜 사람들이 그 EJB가 아닌 ‘평범한 자바 오브젝트’를 사용하기를 꺼려하는지에 대해 의문을 가졌다. 그리고 그는 단순한 오브젝트에는 EJB와 같은 그럴듯한 이름이 없어서(옛날 기술 같아서) 그 사용을 주저하는 것이라고 결론 내렸다. 그래서 만든 단어가 POJO라는 용어인 것이다. POJO 기반의 기술을 사용한다고 말하면 왠지 첨단 기술을 사용하는 앞선 개발자인 듯한 인상을 주기 때문이다. POJO라는 용어를 만들어낸 전략은 매우 성공적이었다. …

§  단순히 과거로의 회기가 아니라 EJB를 넘어서자

Page 12: 자바 웹 개발 시작하기 (4주차 : MVC)

§  너무 다양한 클라이언트… 다양한 사용자…

Page 13: 자바 웹 개발 시작하기 (4주차 : MVC)

§  매일매일 변하는 고객의 요구

Page 14: 자바 웹 개발 시작하기 (4주차 : MVC)

§  게다가 자기가 뭘 원하는지조차 모른다.

§  일단 보이는 것이 UI이니까 UI를 자주 바꾸어 달라고 한다. (DB나 처리 로직을 바꾸어 달라는 요청은 상대적으로 덜함)

§  서비스 부분은 복잡한 업무로직을 정확하고, 빠르게(효율적으로) 처리할지 생각하여 작성 그런데 데이터를 어떻게 보여줄지에 대한 고민까지 해야 되나?

Page 15: 자바 웹 개발 시작하기 (4주차 : MVC)
Page 16: 자바 웹 개발 시작하기 (4주차 : MVC)

§  UI의 로직이 업무로직 보다 더 자주 바뀌는 경향이 있다.

§  새로운 페이지가 추가되거나 기존 페이지의 레이아웃이 변경됨

§  어떻게 요소들을 (특히UI)서로 분리해볼까.

§  모듈로 잘 만들면….

§  중복의 제거

§  같은 일 하는 것들 끼리 모은다

§  관심사의 분리

Page 17: 자바 웹 개발 시작하기 (4주차 : MVC)

§  특정 환경에 종속될 확률이 적어진다

§  모델, 뷰, 컨트롤러의 확실한 분리 §  모델 : MySQL에서 오라클로 바뀌면? NoSQL은?

§  뷰 : JSON만 있는데… 고객사에서 XML 요구

§  컨트롤러 : 갑자기 모바일 페이지 개발일정 추가

§  + 횡단 관심사 도입(다음시간)

Page 18: 자바 웹 개발 시작하기 (4주차 : MVC)

§  POJO기반

§  저장할 정보 §  글 번호 : int, 자동 증가

§  작성자 : String, 20자

§  비밀번호 : String, 20자

§  제목 : String, 100자

§  내용 : String, 5000자

§  작성일 : Date

§  읽은 수 : int

§  테이블명 : ID_board

@Entity

@Table(name = "byuri_board") // 저장하는사람 ID

public class Board

{

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

@Column(name = "board_idx")

private int boardIdx; // PK, 자동생성

@Column(name = "subject", length = 100)

private String subject;

public int getBoardIdx() {

return boardIdx;

}

public void setBoardIdx(int boardIdx) {

this.boardIdx = boardIdx;

}

}

jdbc:mysql://192.168.0.61:3306/STUDY?useUnicode=true&characterEncoding=utf-8 root / qwer1234

Page 19: 자바 웹 개발 시작하기 (4주차 : MVC)

http://192.168.0.220/svn/study/201110_JavaWebDevStudy/byuri/Week?

Page 20: 자바 웹 개발 시작하기 (4주차 : MVC)

§  MVC 모델에 대해 이해함 §  모델 : 소프트웨어 응용과 그와 관련된 고급 클래스 내의 논리적

데이터 기반 구조를 표현

§  뷰 : 사용자 인터페이스 내의 구성요소 표현하는 클래스들

§  컨트롤러 : 모델과 뷰를 연결하고 있는 클래스들 간에 통신

§  변화에 대한 적응을 위해 사용함

§  POJO (Plain Old Java Object) 를 이해함

§  스프링 MVC

Page 21: 자바 웹 개발 시작하기 (4주차 : MVC)

§  다시 보는 스프링 §  단순함에서 발견하는 아름다움

§  IoC (Inversion of Control)

§  DI (Dependency Injection)

§  AOP (Aspect Oriented Programming)

§  중간 정리를 하는 시간… (프로젝트 범위의 설정)

Page 22: 자바 웹 개발 시작하기 (4주차 : MVC)

§  http://maverick.xtorm.net/201

§  http://ko.wikipedia.org/wiki/MVC_%ED%8C%A8%ED%84%B4

§  http://www.oracle.com/technetwork/java/mvc-detailed-136062.html

§  http://patterns.springnote.com/pages/6281317

§  http://roide.tistory.com/63

§  http://yonghyun.net/2010/03/pojo-plain-old-java-object/

Page 23: 자바 웹 개발 시작하기 (4주차 : MVC)