SlideShare a Scribd company logo
1 of 42
Download to read offline
자바 웹 개발 시작하기

(10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

2012. 1. 18

DEVELOPMENT #2

이덕곤
돌아보며
▪ 우리가 목표했던 것은 얼마나 달성되었나요?!
▪ 자바를 사용한 웹 개발 기본학습"
▪ 스프링 중심, 실무 중심으로 기획!
▪ 2011년 마지막 주에 실전 프로젝트로 마무리 -> 삑!!

▪ 비 서버사이드 개발 인력의 서버사이드 이해"
▪ 개발의 심화학습을 혼자 진행 할 수 있도록!
▪ 현재 스타플 개발에 사용되고 있는 환경과 프레임워크 등을

이해하여 개발 능력 향상!

▪ 9주차까지 한번도 빠짐없이 수업이 진행!!!
▪ 그 동안 열심히 참여해 주셔서 감사합니다!!!
함께 공부한 것들(1)
▪ 웹 개발 시작!
▪ 자바 웹 개발 환경 설정 (너무 간단해서 놀라버린…)!
▪ Java, Model1, Model2, web.xml, Servlet, JSP!
▪ 게시판 커뮤니티 만들기 (웹 개발의 시작과 끝 : 게시판)!
!

▪ 인터넷이란? (통신, 네트워크)!
▪ 서버와 클라이언트, 요청에서 응답까지(GET -> 200)!
▪ TCP/IP, OSI 7 Layer, LAN, UDP, 이더넷, 허브, 라우터!
▪ 프로토콜(규약) : HTTP, DNS, Telnet, E-Mail, FTP…
함께 공부한 것들(2)
▪ 스프링 프레임워크 (EJB는 왜 몰락했나?)!
▪ DI(IoC), AOP, 경량, POJO (그럴싸함의 중요함)!

!

▪ 자바로 구현해보는 웹 관련 기술!
▪ MVC (사용자는 변덕쟁이다. 자기가 뭘 원하는지도 모른다.

분리하여 개발한다. 모든 것은 변하기 때문에…)!

▪ 데이터베이스, JPA, 하이버네이트, SQL (CRUD)!
▪ RESTful, 쿠키와 세션, 로그인!
▪ 유효성검사, 국제화, 예외처리, 단위테스트!
▪ RSS뷰, 명세서… 기타 등등
마지막 시간
▪ 라이브러리 업데이트!
▪ 스프링 3.0.6 -> 3.1.0, 하이버네이트 3.6.8 -> 4.0.1!

▪ JPA로의 이동!
▪ EJB3에 포함된 표준(335)기술!
▪ 표준을 사용, 포장을 줄이며 의존성을 줄여나가기!

▪ 게시판 페이지 나누기!
▪ 지금까지 우리가 한 것 돌아보기!
▪ 웹과 우리는? 나아가야 할 방향 생각해보기
Spring Framework 3.1
▪ 주요 변경 사항 (조쉬 롱 : 아래 마지막 링크 참고)!
▪ 포괄적인 자바 기반 애플리케이션 구성 !
▪ 신규 캐시 추상화 !
▪ 운영 환경 지원, 빈 정의 프로파일과 계층형 프로퍼티 출처 관리 !
▪ 하이버네이트 4 지원 !
▪ 자바 7 fork/join과 JDBC 4.1 지원 !

▪ 참고 페이지!
▪ http://static.springsource.org/spring/docs/3.1.x/changelog.txt!
▪ http://blog.outsider.ne.kr/732!
▪ http://www.ksug.org/144
hibernate 4.0
▪ 주요 변경 사항 (아래 링크 참고)!
▪ 많은 변경사항이 있음 (DB도 너무 공부할 것이 많음)!
▪ 멀티 테넌트(Multi-Tenant : 다중역할) 지원!
▪

단일 코드셋, 애플리케이션과 데이터의 파티셔닝, 공통의 애플리케이션 서비스, 코드 수정 없는 커스터마이징!

▪ ServiceRegistry 도입, SessionFactory 정리, i18n 등!

▪ 참고 페이지!
▪ http://relation.to/Bloggers/HibernateCore40IsFinal!
▪ https://community.jboss.org/wiki/HibernateCoreMigrationGuide40!
▪ http://jowon.blogspot.com/2010/05/saas-multi-tenancy.html
라이브러리 변경하기
▪ 스프링과 하이버네이트 라이브러리를 최신화!
▪ 다운로드!
▪ http://www.springsource.org/spring-framework!
▪ http://www.hibernate.org/downloads
스프링 환경설정
▪ HandlerAdapter 변경!
▪ org.springframework.web.servlet.mvc.annotation.Anno
tationMethodHandlerAdapter 에서

org.springframework.web.servlet.mvc.method.annotati
on.RequestMappingHandlerAdapter 로 변화!

▪ <mvc:annotation-driven> 기능 확장!
▪ 그리고 버그 (새로운 것을 받아드리기 어려운 이유)!

!

▪ http://millky.com/home/byuri/10000643
하이버네이트 환경설정

새로운 설정

이전 설정
스프링의 하이버네이트 4.0 지원
▪ EntityBeanFinderFactoryBean가 필요 없다!
▪ annotatedClasses!
▪ 지금까지 Entity를 스캔해주던 유틸리티!
▪ LocalContainerEntityManagerFactoryBean의

packagesToScan을 사용할 수 있음!

▪ HibernateTemplate이 없어졌다!
▪ 스프링 3.1에는 하이버네이트 4.0을 위한

template, factory 같은 지원 클래스가 없다!
▪ 자바 표준인 JPA(2.0) 구현한 EntityManager 사용
JPA(Java Persistence API)
▪ EJB2.0의 Entity Bean이 너무 무거워서(의존도등)

Hibernate같은 ORM기술이 널리 활용되자

JSR-220(Enterprise JavaBeans 3.0)을 들고나옴!
▪ EJB3.0에 포함된 자바 표준으로 하이버네이트도

EntityManager를 통하여 JPA의 구현체가 됨!
▪ 참고!
▪ http://ko.wikipedia.org/wiki/JPA!
▪ http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html!
▪ http://blog.naver.com/chocolleto/30087402615!
▪ http://www.javajigi.net/pages/viewpage.action?pageId=5924
JPA로 개발하기
▪ EntityManager, CriteriaBuilder, CriteriaQuery!
▪ JPA 2.0 표준으로 개발 : 의존성이 줄어듬!
▪ 스프링 말고 다른 프레임워크를 사용해야 한다면?

EntityManager

HibernateTemplate
페이지 나누기
▪ 우선 총 글 수를 가지고 온다!
▪ criteriaQuery.select(criteriaBuilder.count(criteriaQuery.from(Board.class)));!
▪ Long count = entityManager.createQuery(criteriaQuery).getSingleResult();!

▪ public PageNavigator

(int nowPage, int totalRow, int pageSize, int navSize)!
▪ 전체 페이지 수 = 총 글 수 / 페이지 사이즈!

▪ startRow번 게시물 부터 pageSize만큼 가지고옴!
▪ entityManager.createQuery(criteriaQuery)

.setFirstResult(startRow).setMaxResults(pageSize);!
▪

http://eunicon.tistory.com/81!

▪

http://code.google.com/p/doitframe/source/browse/trunk/doit-framework/src/doit/framework/util/PageNavigator.java
/WEB-INF/tags/pagingTag.tag
<%@ tag language="java" body-content="empty" pageEncoding="UTF-8"%>!
<%@ attribute name="pagingAttribute" rtexprvalue="true" required="true"
type="java.lang.Object"%>!
<c:if test="${pagingAttribute.hasPrevPage}">!
<a href="${_URL}?page=${pagingAttribute.blockStartPage - 1}">◀</a>!
</c:if>!
<c:forEach var="page" begin="${pagingAttribute.blockStartPage}" end="$
{pagingAttribute.blockEndPage}">!
<c:if test="${page == pagingAttribute.nowPage}">!
<a style="font-weight: bold;" href="${_URL}?page=${page}">${page}</a>!
</c:if>!
<c:if test="${page != pagingAttribute.nowPage}">!
<a href="${_URL}?page=${page}">${page}</a>!
</c:if>!
</c:forEach>
여기서 마무리…
▪ 기본적인 커뮤니티를 완성했습니다!
▪ 아직 많은 부분 부족하지만…!
▪ 이제 자바 웹 개발의 기본적인 이해가 되셨나요?
그리고 시작하기 : 스타플 5는?
▪ 최신기술 도입으로 성능과 개발효율 향상"
▪ 기타 도입 고민해야 할 기술도 많다 (O-Auth, NoSQL)

!
개발 : Eclipse 3.7.1!
(SVN : 버전관리, Log4j : 로그)!

5.5.XX

!MySQL Connector For Java 5.1.XX
!
! !
3.0 DAO!
!
(모델 부분)
! !
Spring MVC : WEB!
! !
(컨트롤 부분)
!
! POJO Bean : Domain, Service!
! ! (비즈니스 부분)
JSP 2.2(JSTL, EL)!
!
(뷰 부분)
!
!
Tomcat 7.0.XX (Servlet 3.0) !
Java SE 7 update X!
Java EE 6!
위콘, 스타플과 오픈소스
▪ 2007년 시작 스타플 초기부터 개발에 사용!
▪ 스프링 프레임워크!
▪ 최초 2.0으로 개발 시작!
▪ 2.5를 거치고(어노테이션) 현재 3.0(RESTful) 사용 중!
▪ 스타플5에서는 3.1로 업데이트 예정!

!

▪ 잘 사용하는 것도 개발자에게는 즐거운 일이다.!
▪ 모든 것은 사람이 한 일. 감사합니다. 한마디
지금까지 우리가 한 것
▪ 자바라는 기술의 극히 일부분 ▶!
▪ 웹이란 생태계의 일부분"
!
▪ 앞으로 공부해야 할 부분이

너무 많지만…

그 모든 기술이 필요한지도 생각해 봐야 함
이제 겨우 시작…
▪ 뭔가 많이 했지만…!
▪ 이제 단지

자바로 웹을 개발할 수 있는

오만가지 방법 중 한가지를

배우셨을 뿐 입니다.!
▪ 개발도 아니고 웹도 아닌

단지 웹 개발이란 곳에서도

사실 우리는 아직

알고 있는 것이 없습니다.
더 생각해볼 문제
▪ 왜 개발을 하나?!
▪ 그림은 왜 그리나?!
▪ 소설은 왜 쓰나?!
▪ 작곡은 왜 하나?!

▪ 창조적인 작업? 창조?!
▪ 왜 하는 것일까?!
!

▪ 왜 사나? 그냥, 재미로?!
노스페이스
▪ 교복 메이커 중 하나!
▪ 영원무역!
▪ '노스페이스'의 주문자상표부착(OEM) 제조업체!
▪ 자체 브랜드로 같은 품질 판매!

▪ 고어텍스 좋긴 하지만…!
!

▪ 소비, 권력, 보상심리!
▪ 노스페이스 계급표
우리가 살아가는데 필요한 것?
▪ 밥!
▪ 에어컨!

▪ 침대!

삶은? =

▪ 최신형 스마트폰!

▪ 노스페이스 점퍼!

▪ 돈!!
!

▪ 생각? 추억? 기억… : 기억의 중요성 (내 기억의 확장)
컴퓨터
▪ 그 도구로의 시작!
▪ 만지면 반응한다!
▪ 계산기에서 시작!
▪ 사람을 보조하기 위해!
▪ 사람과 컴퓨터의 다른 점은?!
!
!

▪ 직감, 이성, 판단, 자존
Ghost in the Shell (1995)

"바트, 잊지 말아줘 네가 넷트(NET)에 접속할 때, 나는 반드시 네 곁에 있어"
자기 자신을 찾아가는 길
▪ 당신의 기억에 내가 없다면 나는 누구인가?!
▪ 나는 누구인가? 나는 왜 살아가나? 목적은 있나?!
!

▪ 자아를 찾아가기 (단기, 중기, 장기목적)!
▪ 자존감 : 거울에 비친 모습 그대로를 인정 장점을 찾아서 존중하기!
▪ 자존심 : 자존감의 여부와 상관 없이 타인에게 지기를 싫어하는 마음

타인을 이기는 것으로 스스로를 존중!
▪ 자만심 : 있는 그대로 평가하지 못하고 스스로 과대평가 하거나, 계획만 가지고 있는 상
태를 현실과 착각하여 떠벌리고 다니는 행동 또는 마음!

!

▪ 인간 : 생존 > 사회화 > 즐기기
혼자 하면 재미 없어요~
▪ 온라인 영향력!
▪ 또 다른 과시의 수단!
▪ 연결 되고 싶어한다!
▪ 세상에 나 혼자라면?!
▪ 강아지와의 교감!
▪ 반응에 민감함
▪ 휴대폰, 휴대, 좋은것 빠른업글!
▪ 사이클이 빠른 이유!
▪ 과시, 소모품!
▪ 집은 들고 다닐 수 없다
네트워크의 중요성
▪ 인간이란? 사람은?!
▪ 소통, Dunbar's number!
▪ 인문, 사회, 공학, 미학적 접근!
▪ 참고 문서 : 20111012_반년만의 이야기.pdf!
!

▪ 목사님 말씀!
▪ 하느님이 보시기에 참 아름다웠다
서비스
▪ 자아를 찾게 만들어주는?!
!

▪ 타겟이 사용자가 아니다!
▪ Target -> 사용자!
▪ For -> contumer!

!

▪ 누구를 위하여 종을 울리나!
▪ 헤밍웨이(노인과 바다)
핵심은 어디에?
▪ 엘지의 LCD + 삼성의 메모리 + …

= 아이폰!
▪ 핵심은 IOS 라는 말도 있지만…!
▪ IOS도 베이스는 유닉스!
▪ 그리고 여러 유틸리티들!

!

▪ 소프트웨어가 핵심?!
!

▪ 결론은! 플랫폼, UX
플랫폼(Platform) = 멍석
▪ 그 자체가 최종 결과물이 아니라 Service나

S/W가 만들어지는 재료나 환경을 제공하는 것
기술을 넘어서기
▪ 이미 기술은 풍부!
!

▪ 시장의 형성!
▪ 아름다움으로 승부하기
▪ 표준!
▪ 업계표준!
▪ 수많은 표준!
▪ 수많은 도구
▪ 은총알은 없다!
▪ 바퀴를 다시 만들 필요는 없다!
▪ 누군가는 이 문제를 겪었습니다.!
▪ 창조력, 아름답더라!
▪ 왜 오픈소스를 만드나?!
▪ 공유와 참여
▪ 오픈API!
▪ 매쉬업!
▪ 참여 개방!
▪ 클라우드!
▪ 빅 데이터!
▪ 대용량 분석
더 공부해야 할 사항
▪ 설정도 @으로!
▪ Maven!
▪ UML!
▪ NoSQL!
▪ 하둡, 맵 리듀스!
▪ 반복반복반복 : 의도된
다음에 다시 만나요!
▪ 명세서 발표회!
▪ 작품 발표회
잊지 말아야 할 것
▪ "The power of the web is in its universality.

Access by everyone regardless of disability is

an essential aspect." 

- Tim Berners-Lee!
!

▪ "웹(WWW)의 힘은 보편성에 있다.

불리한 조건에 관계없이 누구나 접근하는 것은

웹의 필수적인 측면이다.“

- 팀 버너스 리 (인터넷의 아버지: URL, HTTP, HTML 설계)
수고하셨습니다.
▪ 마지막!
▪ 새로운 시작!
!

▪ 우리도 통해야 합니다.!
▪ 스타플로 통해야 합니다.!
!

▪ 플렛폼이 되는 그날까지…!
▪ 위콘 파이팅!
뒷풀이 장소
▪ 장소!
▪ 약도
자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)


More Related Content

What's hot

Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
Jakub Kubrynski
 

What's hot (20)

Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 
Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)
 
React hooks
React hooksReact hooks
React hooks
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js Express
 
Introduction to JSX
Introduction to JSXIntroduction to JSX
Introduction to JSX
 
Introduction to React JS for beginners
Introduction to React JS for beginners Introduction to React JS for beginners
Introduction to React JS for beginners
 
Express node js
Express node jsExpress node js
Express node js
 
React + Redux Introduction
React + Redux IntroductionReact + Redux Introduction
React + Redux Introduction
 
ReactJs
ReactJsReactJs
ReactJs
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
 
Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming  Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming
 
React for Beginners
React for BeginnersReact for Beginners
React for Beginners
 
React Hooks
React HooksReact Hooks
React Hooks
 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVC
 
Reactjs
Reactjs Reactjs
Reactjs
 
React js
React jsReact js
React js
 

Viewers also liked

8주 dom & event basic
8주  dom & event basic8주  dom & event basic
8주 dom & event basic
지수 윤
 
4주 CSS Layout
4주 CSS Layout4주 CSS Layout
4주 CSS Layout
지수 윤
 

Viewers also liked (20)

자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
자바 웹 개발 시작하기 : 계획
자바 웹 개발 시작하기 : 계획자바 웹 개발 시작하기 : 계획
자바 웹 개발 시작하기 : 계획
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
 
Starpl 20111012 스타플5를_만들기_시작하며
Starpl 20111012 스타플5를_만들기_시작하며Starpl 20111012 스타플5를_만들기_시작하며
Starpl 20111012 스타플5를_만들기_시작하며
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee docker
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 
자바 웹 개발 시작하기 (7주차 : 국제화, 확인검증, 예외처리)
자바 웹 개발 시작하기 (7주차 : 국제화, 확인검증, 예외처리)자바 웹 개발 시작하기 (7주차 : 국제화, 확인검증, 예외처리)
자바 웹 개발 시작하기 (7주차 : 국제화, 확인검증, 예외처리)
 
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
 
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
 
자바 웹 개발 시작하기 (9주차 : 프로젝트 구현 – 추가적인 뷰)
자바 웹 개발 시작하기 (9주차 : 프로젝트 구현 – 추가적인 뷰)자바 웹 개발 시작하기 (9주차 : 프로젝트 구현 – 추가적인 뷰)
자바 웹 개발 시작하기 (9주차 : 프로젝트 구현 – 추가적인 뷰)
 
자바 웹 개발 시작하기 (4주차 : MVC)
자바 웹 개발 시작하기 (4주차 : MVC)자바 웹 개발 시작하기 (4주차 : MVC)
자바 웹 개발 시작하기 (4주차 : MVC)
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기
 
spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼
 
스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기 스프링 프레임워크로 블로그 개발하기
스프링 프레임워크로 블로그 개발하기
 
8주 dom & event basic
8주  dom & event basic8주  dom & event basic
8주 dom & event basic
 
7주 JavaScript Part2
7주 JavaScript Part27주 JavaScript Part2
7주 JavaScript Part2
 
4주 CSS Layout
4주 CSS Layout4주 CSS Layout
4주 CSS Layout
 
Database design
Database designDatabase design
Database design
 

Similar to 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)


131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
NAVER D2
 
Node js[stg]onimusha 20140725
Node js[stg]onimusha 20140725Node js[stg]onimusha 20140725
Node js[stg]onimusha 20140725
병헌 정
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
ChangKyu Song
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
NAVER D2
 
평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2
cho hyun jong
 
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
Sanghun Yun
 

Similar to 자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
 (20)

131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
OSS개발자 포럼 캠프
OSS개발자 포럼 캠프OSS개발자 포럼 캠프
OSS개발자 포럼 캠프
 
Node js[stg]onimusha 20140725
Node js[stg]onimusha 20140725Node js[stg]onimusha 20140725
Node js[stg]onimusha 20140725
 
웹 본격적으로 배우기 전 감 잡기 - 1
웹 본격적으로 배우기 전 감 잡기 - 1웹 본격적으로 배우기 전 감 잡기 - 1
웹 본격적으로 배우기 전 감 잡기 - 1
 
Open Source is My Job
Open Source is My JobOpen Source is My Job
Open Source is My Job
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
 
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
 
My Way, Your Way
My Way, Your WayMy Way, Your Way
My Way, Your Way
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 
이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께이제 막 웹개발자 되고싶은 분들께
이제 막 웹개발자 되고싶은 분들께
 
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
2014 공개소프트웨어 대회 소프트웨어 개발 트렌드의 변화
 
백엔드 개발자로 1인분하기
백엔드 개발자로 1인분하기백엔드 개발자로 1인분하기
백엔드 개발자로 1인분하기
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2평범한 개발자 오픈소스로 먹고살기 2
평범한 개발자 오픈소스로 먹고살기 2
 
Doxygen 사용법
Doxygen 사용법Doxygen 사용법
Doxygen 사용법
 
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
기술 관심 갖기: 스타트업 기술 101 (Interested in Tech?: Startup Technology 101)
 
모바일 Rpg 게임서버 리팩토링
모바일 Rpg 게임서버 리팩토링모바일 Rpg 게임서버 리팩토링
모바일 Rpg 게임서버 리팩토링
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular
 
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
[15.09.17] 인터넷과 웹의 역사 그리고 현재의 트렌드
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
 

자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)


  • 1. 자바 웹 개발 시작하기
 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)
 2012. 1. 18 DEVELOPMENT #2 이덕곤
  • 2. 돌아보며 ▪ 우리가 목표했던 것은 얼마나 달성되었나요?! ▪ 자바를 사용한 웹 개발 기본학습" ▪ 스프링 중심, 실무 중심으로 기획! ▪ 2011년 마지막 주에 실전 프로젝트로 마무리 -> 삑!! ▪ 비 서버사이드 개발 인력의 서버사이드 이해" ▪ 개발의 심화학습을 혼자 진행 할 수 있도록! ▪ 현재 스타플 개발에 사용되고 있는 환경과 프레임워크 등을
 이해하여 개발 능력 향상! ▪ 9주차까지 한번도 빠짐없이 수업이 진행!!! ▪ 그 동안 열심히 참여해 주셔서 감사합니다!!!
  • 3. 함께 공부한 것들(1) ▪ 웹 개발 시작! ▪ 자바 웹 개발 환경 설정 (너무 간단해서 놀라버린…)! ▪ Java, Model1, Model2, web.xml, Servlet, JSP! ▪ 게시판 커뮤니티 만들기 (웹 개발의 시작과 끝 : 게시판)! ! ▪ 인터넷이란? (통신, 네트워크)! ▪ 서버와 클라이언트, 요청에서 응답까지(GET -> 200)! ▪ TCP/IP, OSI 7 Layer, LAN, UDP, 이더넷, 허브, 라우터! ▪ 프로토콜(규약) : HTTP, DNS, Telnet, E-Mail, FTP…
  • 4. 함께 공부한 것들(2) ▪ 스프링 프레임워크 (EJB는 왜 몰락했나?)! ▪ DI(IoC), AOP, 경량, POJO (그럴싸함의 중요함)! ! ▪ 자바로 구현해보는 웹 관련 기술! ▪ MVC (사용자는 변덕쟁이다. 자기가 뭘 원하는지도 모른다.
 분리하여 개발한다. 모든 것은 변하기 때문에…)! ▪ 데이터베이스, JPA, 하이버네이트, SQL (CRUD)! ▪ RESTful, 쿠키와 세션, 로그인! ▪ 유효성검사, 국제화, 예외처리, 단위테스트! ▪ RSS뷰, 명세서… 기타 등등
  • 5. 마지막 시간 ▪ 라이브러리 업데이트! ▪ 스프링 3.0.6 -> 3.1.0, 하이버네이트 3.6.8 -> 4.0.1! ▪ JPA로의 이동! ▪ EJB3에 포함된 표준(335)기술! ▪ 표준을 사용, 포장을 줄이며 의존성을 줄여나가기! ▪ 게시판 페이지 나누기! ▪ 지금까지 우리가 한 것 돌아보기! ▪ 웹과 우리는? 나아가야 할 방향 생각해보기
  • 6. Spring Framework 3.1 ▪ 주요 변경 사항 (조쉬 롱 : 아래 마지막 링크 참고)! ▪ 포괄적인 자바 기반 애플리케이션 구성 ! ▪ 신규 캐시 추상화 ! ▪ 운영 환경 지원, 빈 정의 프로파일과 계층형 프로퍼티 출처 관리 ! ▪ 하이버네이트 4 지원 ! ▪ 자바 7 fork/join과 JDBC 4.1 지원 ! ▪ 참고 페이지! ▪ http://static.springsource.org/spring/docs/3.1.x/changelog.txt! ▪ http://blog.outsider.ne.kr/732! ▪ http://www.ksug.org/144
  • 7. hibernate 4.0 ▪ 주요 변경 사항 (아래 링크 참고)! ▪ 많은 변경사항이 있음 (DB도 너무 공부할 것이 많음)! ▪ 멀티 테넌트(Multi-Tenant : 다중역할) 지원! ▪ 단일 코드셋, 애플리케이션과 데이터의 파티셔닝, 공통의 애플리케이션 서비스, 코드 수정 없는 커스터마이징! ▪ ServiceRegistry 도입, SessionFactory 정리, i18n 등! ▪ 참고 페이지! ▪ http://relation.to/Bloggers/HibernateCore40IsFinal! ▪ https://community.jboss.org/wiki/HibernateCoreMigrationGuide40! ▪ http://jowon.blogspot.com/2010/05/saas-multi-tenancy.html
  • 8. 라이브러리 변경하기 ▪ 스프링과 하이버네이트 라이브러리를 최신화! ▪ 다운로드! ▪ http://www.springsource.org/spring-framework! ▪ http://www.hibernate.org/downloads
  • 9. 스프링 환경설정 ▪ HandlerAdapter 변경! ▪ org.springframework.web.servlet.mvc.annotation.Anno tationMethodHandlerAdapter 에서
 org.springframework.web.servlet.mvc.method.annotati on.RequestMappingHandlerAdapter 로 변화! ▪ <mvc:annotation-driven> 기능 확장! ▪ 그리고 버그 (새로운 것을 받아드리기 어려운 이유)! ! ▪ http://millky.com/home/byuri/10000643
  • 11. 스프링의 하이버네이트 4.0 지원 ▪ EntityBeanFinderFactoryBean가 필요 없다! ▪ annotatedClasses! ▪ 지금까지 Entity를 스캔해주던 유틸리티! ▪ LocalContainerEntityManagerFactoryBean의
 packagesToScan을 사용할 수 있음! ▪ HibernateTemplate이 없어졌다! ▪ 스프링 3.1에는 하이버네이트 4.0을 위한
 template, factory 같은 지원 클래스가 없다! ▪ 자바 표준인 JPA(2.0) 구현한 EntityManager 사용
  • 12. JPA(Java Persistence API) ▪ EJB2.0의 Entity Bean이 너무 무거워서(의존도등)
 Hibernate같은 ORM기술이 널리 활용되자
 JSR-220(Enterprise JavaBeans 3.0)을 들고나옴! ▪ EJB3.0에 포함된 자바 표준으로 하이버네이트도
 EntityManager를 통하여 JPA의 구현체가 됨! ▪ 참고! ▪ http://ko.wikipedia.org/wiki/JPA! ▪ http://www.oracle.com/technetwork/articles/javaee/jpa-137156.html! ▪ http://blog.naver.com/chocolleto/30087402615! ▪ http://www.javajigi.net/pages/viewpage.action?pageId=5924
  • 13. JPA로 개발하기 ▪ EntityManager, CriteriaBuilder, CriteriaQuery! ▪ JPA 2.0 표준으로 개발 : 의존성이 줄어듬! ▪ 스프링 말고 다른 프레임워크를 사용해야 한다면? EntityManager HibernateTemplate
  • 14. 페이지 나누기 ▪ 우선 총 글 수를 가지고 온다! ▪ criteriaQuery.select(criteriaBuilder.count(criteriaQuery.from(Board.class)));! ▪ Long count = entityManager.createQuery(criteriaQuery).getSingleResult();! ▪ public PageNavigator
 (int nowPage, int totalRow, int pageSize, int navSize)! ▪ 전체 페이지 수 = 총 글 수 / 페이지 사이즈! ▪ startRow번 게시물 부터 pageSize만큼 가지고옴! ▪ entityManager.createQuery(criteriaQuery)
 .setFirstResult(startRow).setMaxResults(pageSize);! ▪ http://eunicon.tistory.com/81! ▪ http://code.google.com/p/doitframe/source/browse/trunk/doit-framework/src/doit/framework/util/PageNavigator.java
  • 15. /WEB-INF/tags/pagingTag.tag <%@ tag language="java" body-content="empty" pageEncoding="UTF-8"%>! <%@ attribute name="pagingAttribute" rtexprvalue="true" required="true" type="java.lang.Object"%>! <c:if test="${pagingAttribute.hasPrevPage}">! <a href="${_URL}?page=${pagingAttribute.blockStartPage - 1}">◀</a>! </c:if>! <c:forEach var="page" begin="${pagingAttribute.blockStartPage}" end="$ {pagingAttribute.blockEndPage}">! <c:if test="${page == pagingAttribute.nowPage}">! <a style="font-weight: bold;" href="${_URL}?page=${page}">${page}</a>! </c:if>! <c:if test="${page != pagingAttribute.nowPage}">! <a href="${_URL}?page=${page}">${page}</a>! </c:if>! </c:forEach>
  • 16. 여기서 마무리… ▪ 기본적인 커뮤니티를 완성했습니다! ▪ 아직 많은 부분 부족하지만…! ▪ 이제 자바 웹 개발의 기본적인 이해가 되셨나요?
  • 17. 그리고 시작하기 : 스타플 5는? ▪ 최신기술 도입으로 성능과 개발효율 향상" ▪ 기타 도입 고민해야 할 기술도 많다 (O-Auth, NoSQL) ! 개발 : Eclipse 3.7.1! (SVN : 버전관리, Log4j : 로그)! 5.5.XX !MySQL Connector For Java 5.1.XX ! ! ! 3.0 DAO! ! (모델 부분) ! ! Spring MVC : WEB! ! ! (컨트롤 부분) ! ! POJO Bean : Domain, Service! ! ! (비즈니스 부분) JSP 2.2(JSTL, EL)! ! (뷰 부분) ! ! Tomcat 7.0.XX (Servlet 3.0) ! Java SE 7 update X! Java EE 6!
  • 18. 위콘, 스타플과 오픈소스 ▪ 2007년 시작 스타플 초기부터 개발에 사용! ▪ 스프링 프레임워크! ▪ 최초 2.0으로 개발 시작! ▪ 2.5를 거치고(어노테이션) 현재 3.0(RESTful) 사용 중! ▪ 스타플5에서는 3.1로 업데이트 예정! ! ▪ 잘 사용하는 것도 개발자에게는 즐거운 일이다.! ▪ 모든 것은 사람이 한 일. 감사합니다. 한마디
  • 19. 지금까지 우리가 한 것 ▪ 자바라는 기술의 극히 일부분 ▶! ▪ 웹이란 생태계의 일부분" ! ▪ 앞으로 공부해야 할 부분이
 너무 많지만…
 그 모든 기술이 필요한지도 생각해 봐야 함
  • 20. 이제 겨우 시작… ▪ 뭔가 많이 했지만…! ▪ 이제 단지
 자바로 웹을 개발할 수 있는
 오만가지 방법 중 한가지를
 배우셨을 뿐 입니다.! ▪ 개발도 아니고 웹도 아닌
 단지 웹 개발이란 곳에서도
 사실 우리는 아직
 알고 있는 것이 없습니다.
  • 21. 더 생각해볼 문제 ▪ 왜 개발을 하나?! ▪ 그림은 왜 그리나?! ▪ 소설은 왜 쓰나?! ▪ 작곡은 왜 하나?! ▪ 창조적인 작업? 창조?! ▪ 왜 하는 것일까?! ! ▪ 왜 사나? 그냥, 재미로?!
  • 22. 노스페이스 ▪ 교복 메이커 중 하나! ▪ 영원무역! ▪ '노스페이스'의 주문자상표부착(OEM) 제조업체! ▪ 자체 브랜드로 같은 품질 판매! ▪ 고어텍스 좋긴 하지만…! ! ▪ 소비, 권력, 보상심리! ▪ 노스페이스 계급표
  • 23. 우리가 살아가는데 필요한 것? ▪ 밥! ▪ 에어컨! ▪ 침대! 삶은? = ▪ 최신형 스마트폰! ▪ 노스페이스 점퍼! ▪ 돈!! ! ▪ 생각? 추억? 기억… : 기억의 중요성 (내 기억의 확장)
  • 24. 컴퓨터 ▪ 그 도구로의 시작! ▪ 만지면 반응한다! ▪ 계산기에서 시작! ▪ 사람을 보조하기 위해! ▪ 사람과 컴퓨터의 다른 점은?! ! ! ▪ 직감, 이성, 판단, 자존
  • 25. Ghost in the Shell (1995) "바트, 잊지 말아줘 네가 넷트(NET)에 접속할 때, 나는 반드시 네 곁에 있어"
  • 26. 자기 자신을 찾아가는 길 ▪ 당신의 기억에 내가 없다면 나는 누구인가?! ▪ 나는 누구인가? 나는 왜 살아가나? 목적은 있나?! ! ▪ 자아를 찾아가기 (단기, 중기, 장기목적)! ▪ 자존감 : 거울에 비친 모습 그대로를 인정 장점을 찾아서 존중하기! ▪ 자존심 : 자존감의 여부와 상관 없이 타인에게 지기를 싫어하는 마음
 타인을 이기는 것으로 스스로를 존중! ▪ 자만심 : 있는 그대로 평가하지 못하고 스스로 과대평가 하거나, 계획만 가지고 있는 상 태를 현실과 착각하여 떠벌리고 다니는 행동 또는 마음! ! ▪ 인간 : 생존 > 사회화 > 즐기기
  • 27. 혼자 하면 재미 없어요~ ▪ 온라인 영향력! ▪ 또 다른 과시의 수단! ▪ 연결 되고 싶어한다! ▪ 세상에 나 혼자라면?! ▪ 강아지와의 교감! ▪ 반응에 민감함
  • 28. ▪ 휴대폰, 휴대, 좋은것 빠른업글! ▪ 사이클이 빠른 이유! ▪ 과시, 소모품! ▪ 집은 들고 다닐 수 없다
  • 29. 네트워크의 중요성 ▪ 인간이란? 사람은?! ▪ 소통, Dunbar's number! ▪ 인문, 사회, 공학, 미학적 접근! ▪ 참고 문서 : 20111012_반년만의 이야기.pdf! ! ▪ 목사님 말씀! ▪ 하느님이 보시기에 참 아름다웠다
  • 30. 서비스 ▪ 자아를 찾게 만들어주는?! ! ▪ 타겟이 사용자가 아니다! ▪ Target -> 사용자! ▪ For -> contumer! ! ▪ 누구를 위하여 종을 울리나! ▪ 헤밍웨이(노인과 바다)
  • 31. 핵심은 어디에? ▪ 엘지의 LCD + 삼성의 메모리 + …
 = 아이폰! ▪ 핵심은 IOS 라는 말도 있지만…! ▪ IOS도 베이스는 유닉스! ▪ 그리고 여러 유틸리티들! ! ▪ 소프트웨어가 핵심?! ! ▪ 결론은! 플랫폼, UX
  • 32. 플랫폼(Platform) = 멍석 ▪ 그 자체가 최종 결과물이 아니라 Service나
 S/W가 만들어지는 재료나 환경을 제공하는 것
  • 33. 기술을 넘어서기 ▪ 이미 기술은 풍부! ! ▪ 시장의 형성! ▪ 아름다움으로 승부하기
  • 34. ▪ 표준! ▪ 업계표준! ▪ 수많은 표준! ▪ 수많은 도구
  • 35. ▪ 은총알은 없다! ▪ 바퀴를 다시 만들 필요는 없다! ▪ 누군가는 이 문제를 겪었습니다.! ▪ 창조력, 아름답더라! ▪ 왜 오픈소스를 만드나?! ▪ 공유와 참여
  • 36. ▪ 오픈API! ▪ 매쉬업! ▪ 참여 개방! ▪ 클라우드! ▪ 빅 데이터! ▪ 대용량 분석
  • 37. 더 공부해야 할 사항 ▪ 설정도 @으로! ▪ Maven! ▪ UML! ▪ NoSQL! ▪ 하둡, 맵 리듀스! ▪ 반복반복반복 : 의도된
  • 38. 다음에 다시 만나요! ▪ 명세서 발표회! ▪ 작품 발표회
  • 39. 잊지 말아야 할 것 ▪ "The power of the web is in its universality.
 Access by everyone regardless of disability is
 an essential aspect." 
 - Tim Berners-Lee! ! ▪ "웹(WWW)의 힘은 보편성에 있다.
 불리한 조건에 관계없이 누구나 접근하는 것은
 웹의 필수적인 측면이다.“
 - 팀 버너스 리 (인터넷의 아버지: URL, HTTP, HTML 설계)
  • 40. 수고하셨습니다. ▪ 마지막! ▪ 새로운 시작! ! ▪ 우리도 통해야 합니다.! ▪ 스타플로 통해야 합니다.! ! ▪ 플렛폼이 되는 그날까지…! ▪ 위콘 파이팅!