기본 콘텐츠로 건너뛰기

글

라벨이 105인 게시물 표시

3.08 Framework(8) : modelAndView return & spring return

modelAndView return & spring return  - modelAndView에서 dispatcher servlet으로 데이터와 화면을 이동할 때   어떠한 방식으로 데이터와 화면을 넘길 것인지 생각  - 방법은 2가지 ※ return 전략 예시 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 15...

3.07 Framework(7) : SpringMVC///

SpringMVC 0. 개요  - Spring framework 이용  - Model + View + Controller 아키텍처 구조 <springMVC 개요> 1. Controller 1) 역할  - 비즈니스 로직 수행  - 내비게이션: forward와 sendRedirect를 이용  - 모델과 뷰의 연결: object scope를 이용 2) Controller의 역할  - controller 객체의 일반적, 공통적 행위를 정의, 규정하는 인터페이스  - control단에서 수행하는 핵심적, 실질적 역할을 수행  - servletAPI의 핵심 객체인 HttpServletRequest, HttpServletResponse 인자로 전달받음 2. ModelAndView  - Model data: Controller가 request 처리 후 view에 전달하는 데이터  - Controller에서 business logic을 수행한 data와 data를 이동하고자 하는 view로 전송 3. ViewResolver  -  -

3.06 Framework(6) : 선언적 transaction 처리

선언적 transaction 처리 0. 개요  - transaction 처리를 코드에서 직접적으로 수행하지 않음   예) commit, rollback을 하지 않음: springAOP때문에  - 설정 파일, annotation을 통해 transaction의 범위, rollback 규칙 등을 정의 1. 처리 방식 1) <tx:advice>를 이용 2) @transactional을 이용 <tx:advice 방식을 이용한 선언적 트랜잭션>

3.05 Framework(5) : AOP

Aspect-Oriented Programming 0. 개요 1. proxy 2. Dynamic proxy 3. AOP 구현 절차(1) 4. AOP 구현 절차(2) 5. AOP 구현 절차(3) 6. AOP 구현 절차(4) 0. 개요 0) Aspect: 관점 1) core concern(핵심 관심): 시스템이 추구하는 핵심적인 가치, 기능 2) cross cutting concern(횡단 관심): core concern에 공통적으로 적용되는 공통 모듈  - 즉, AOP란 프로그래밍의 관점을 바꿔 보자는 의미로 애플리케이션 전반에 걸쳐 사용되는 기능 을 재사용 하자는 것  - 상속, 위임의 방식을 취하는 OOP 방식으로는 깔끔한 모듈화가 안됨  - 인프라, 부가기능의 모듈화: logging, 보안, 트랜잭션  - 애플리케이션 전반에 흩어진 공통 기능을 하나로 모으자! <AOP의 개요> 3) AOP 용어 (1) Target : 부가 기능(Advice)를 부여할 대상, 핵심기능 (2) Aspect : OOP에서의 object와 유사한 의미               부가기능 모듈이라고 부름               부가될 기능을 정의한 advice 와 어디에 적용할지 결정하는 pointcut 을 갖고 있음 (3) Advice : 실질적으로 부가기능을 담은 구현체 (4) PointCut : 부가기능이 적용될 대상(method)을 선정할 방법                   advice를 적용할 joinpoint를 선별 하는 기능을 정의 (5) JoinPoint : advice가 적용될 수 있는 위치         ...

3.04 Framework(4) : annotation

Framework(4) : annotation 0. 기존의 MVC 패턴 <DAO를 새로 연결하려면 발생하는 문제점> <MVC 패턴의 변화>  - ①, ②: 데이터베이스와 직접 통신을 하는 persistence 계층을 담당할 DAO interface 구현  - ③: 서비스 비즈니스 로직을 추상화한 interface  - ④: SQL은 MyBatis가 담당하는 것이 기본        (단, spring을 연동시에 DB관리 정보는 스프링이 관리) 1. annotation(@) 기반의 개발  - meta-data → xml → annotation <annotation 기반의 개발을 위한 예시1> <annotation 기반의 개발을 위한 예시2>

3.03 Framework(3) : Mybatis Framework

Framework(3) : Mybatis Framework 0. 개요 <Why we use Mybatis? : JDBC의 문제 영역>  - JDBC를 한 번 더 캡슐화한 framework = Mybatis framework 1. Mybatis: meta-data를 사용해서 SQL 구문을 관리 <메타 데이터에서 실행한 mapping 예시> ※ parameter, attribute  - parameter: get/post방식으로 값을 넘기기                  (return type: string)  - attribute: page, session, request 등 object scope 영역에 임의의 속성값을 가져오기                    (return type: object) 2. # / $ <#대입자와 $대입자의 차이> 3. Mybatis에서의 null 처리  - Mybatis에서는 SQL Map 설정파일에 데이터 타입을 명시해서 null 처리  - #{} 표기법 파라미터 이름 뒤에 java.sql.Types의 field로 명시 <jdbcTpye, 세미콜론 구분자를 이용한 처리> <null 처리 예시 및 select 결과 컬럼 값이 null일 경우 setter method 호출 유무 확인> 4. resultMap(외부 결과 맵) <외부 결과 맵 사용> 5. trim <WHERE 조건절을 trim 엘리먼트를 이용하여 바꾼 사례> 6. sql element / include element ...

3.02 Framework(2)

Framework(2) 1. Inversion of Control <제어 역행 및 dependency lookup 개요> 2. BEAN life cycle  - 스프링 프레임워크를 비롯한 Ioc Container는 자신이 관리하는 BEAN의 life cycle을 관리하고 특정시점에 BEAN에게 이를 알려주는 메커니즘  - wiring 작업을 통해 instance 생성, 소멸 과정까지의 주기  - life cycle에 참여: instance 생성 및 소멸시에 개입 가능, init()과 destroy()를 주로 사용  3. pattern(유형)  예) VO pattern, DAO pattern, Front controller pattern, Singleton pattern ...  - Singleton pattern: static으로 자기 자신을 선언                            private 접근제한자 필드에서 사용                            getInstance()를 사용하여 자기 자신을 이용할 수 있게 객체 생성     → instance를 Factory method를 이용하여 생성할 때         instance를 여러개 생성하지 않을 경우 ※ container(by weight)  - light weight container: 빠른 구동 / 유연함 / 컨테이너 내에 object 배치가 용이   예) POJO 기반 컨테이너  - heavy weight contai...

3.01 Framework(1)

Framework(1) - 특정 개념, 문제영역을 해결한 재사용성 이 있고 확장성 이 있는 라이브러리 - struts, webwork, spring... - 돈과 시간의 절약이 가능하고 디버그 양이 감소 0. 개요 1. 제어 역행 2. Bean Factory / Application Context 3. 왜 Framework를 적용해야하지? 0. 개요 < new 연산자의 폐해 & interface 기반 개발 & 의존성 주입 개요> 1. IoC: Inversion Of Control(제어 역전, 제어 역행)  - 제어 역행: 자신에게 제어권이 없음 → 책임이 나에게 없음 1) 의존성 주입: 사용할 instnace를 주입 - 외부 설정 파일을 통해 정의(xml, properties)  - setter injection: 클래스 간 의존관계 연결에 setter method를 이용  - constructor injection: 클래스 간 의존관계 연결에 생성자를 이용 2) 의존성 찾기(Dependency LookUp) 3) IoC Container : 의존성 주입을 관리, bean 생성과 소멸 , API 제공 등의 역할 수행                         meta-data 에 서술적, 선언적으로 기술하고 필요한 instance를 LookUp ※ POJO: Plain Old Java Object  - 특정 자바 모델, 기능, 프레임 워크 등을 따르지 않는 자바 객체  - BEAN 규약을 준수   예) spring framework는 POJO 방식의 프레임 워크 <xml에서 생성자를 이용한 의존성 주입 예시>  <생성자를 이용한, setter m...

2.01. EL(Expression Language) / JSTL(Java Standard Tag Library)

EL(Expression Language) / JSTL(Java Standard Tag Library) 0. EL 개요 1. 장, 단점 및 특징 2. JSTL 0. 개요  - 표현: ${}  - java code를 캡슐화하여 다른 표현식을 사용  - 태그와의 혼동을 막고 간결한 소스 작성을 도움  - JSP 보완하는 역할 1. 장, 단점 및 특징 1) 장점 및 단점  - 장점: parsing 단계를 최소화, 빠른 컴파일 가능  - 단점: 복잡한 데이터 처리 불가능 2) 특징  - Object Scope를 사용할 수 있도록 자체적으로 implicit object 제공   : page / request / session / application   → Object Scope 검색 시에 page > request > session > application 순서로 검색함  - BEAN field / collection에 접근이 쉬워짐  - 자체 연산자와 내장객체를 제공함  - isELIgnored = "false" → default: EL 사용 가능  - 산술, 논리, 관계 연산자 사용 가능  - 조건 연산자(삼항 연산자) 사용 가능  - empty 연산자 사용 가능 <EL 사용 예시 및 OGNL> 2. JSTL 1) 각 회사마다 독특한 Tag lib 생성하기 시작 2) JSTL은 구현체가 필요 3) zero configuration: 특별한 설정이 필요없음 4) 자바 코드를 캡슐화 : 자바 내에서 사용하는 연산자, 반복문, 조건문 등 사용 가능 예) 1 2 3 4 5 <% @  taglib prefix = "a"  uri = "http://java.sun.com...

1.12 Model 2 Architecture

Model 2 Architecture 1. 개요 2. 표준화된 폴더구조(배치 서술자) 3. Forward, Redirect 1. 개요 <Model 2 Architecture 개요> 2. 표준화된 폴더 구조 <표준화된 폴더 구조> ※ Domain Object의 경우 필수로 seializable을 구현해야 한다  - 현재 가지고 있는 데이터가 언젠가는 외부로 이동할 것임을 알려주는 marker interface  예) 현재 메모리가 다 차서 임시로 io를 통해 내보낼 경우 serializable이 있어야 출입가능 3. Forward와 Redirect <Forward와 Redirect의 개요> 1) Forward  예) 고객이 120으로 상담 전화를 걺      → 상담원이 고객 질의의 내용을 잘 몰라 옆 상담원에게 조언을 구함      → 고객에게 답을 줌 2) Redirect  예) 고객이 120으로 상담 전화를 걺       → 상담원이 "고객님 111번으로 전화를 걸어 상담해주세요"라고 답함       → 고객이 111번으로 전화를 걸어 문제를 해결함 4. summary <Model 2 Architecture> 1) Dispatcher Servlet  - 단일인입점  - client의 요구사항 판단 2) Controller Mapping  - 판단한 요구사항에 맞게 인스턴스 생성 및 호출  - 싱글턴 패턴 구조: 외부의 무분별한 접근을 방지                           생성자...

1.11 Model 1 Architecture / Work Flow

Model 1 Architecture / Work Flow 1. Model 1 Architecture 2. Work Flow 1. Model 1 Architecture  <Model 1 Architecture 개요> 2. Work Flow  - 방어적 코딩   예) 로그인할 회원의 로그인 유무를 확인하기 전에 유효성 검사를 통해 애초에 controller 단을 왕복할지 여부 판단: 쓸데없는 리소스 사용을 줄이고 효율적인 시스템 구성 가능

1.10 Include / Forward / Redirect

Include / Forward / Redirect 1. Include 2. Forward 3. Redirect 1. Include (1) Dynamic include <Dynamic Include 개요> (2) Static include <Static Include 개요> 2. Forward  - Web Container 차원에서 페이지 이동만 있음  - 실제로 웹 브라우저는 다른 페이지로 이동했는지 알 수가 없음    즉, 브라우저에 최초에 호출한 URL만 표시 되고 이동한 페이지의 URL 정보는 볼 수 없음  - 현재 실행 중인 페이지와 forward에 의해 호출될 페이지는 request와 response 객체를 공유함 3. Redirect <Redirect 개요>  - Web Container는 Redirect 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라고 명령함  - 그러면 웹 브라우저는 URL를 지시된 주소로 바꾸고 그 주소로 이동함  - 다른 웹 컨데이너에 있는 주소로 이동이 가능함  - 새로운 페이지에는 request와 response 객체가 새롭게 생성됨

1.09 Model View Controller / Object Scope

Model View Controller / Object Scope 0. 개요 <Model, View, Controller 그리고 Model2 Web> 1. scope  - 정보를 저장하고 빼내오는 기능을 제공   예) getAttribute(name, value)        setAttribute(name, value) (1) session scope <session scope 개요> (2) application scope <application scope 개요> (3) request scope <request scope 개요>