Web 20

Application Scope

Application Scope 하나의 웹 애플리케이션에서 공유하고 싶은 변수가 있을 때 사용한다. ✔︎ 웹 어플리케이션 하나당 하나의 application객체가 사용된다. ! 하나의 서버에는 웹 애플리케이션이 하나만 존재하는 것이 아니라 여러 개 존재할 수 있다. application scope은 이 하나의 웹 어플리케이션 내에 객체 하나라고 생각하면 됨 하나의 웹 어플리케이션 내에서는 다 이 객체 여기다가 뭔가 값을 저장하고 사용할 수 있는 영역이라고 이해하면 쉽다. ✔︎ 웹 어플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다. ✔︎ 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용한다. ⚠︎ 주의할 점 ⚠︎ application 영역에 값을 맡겨놨기 때문에 이 웹 애플리케이션 내..

Web/Spring 2021.06.24

Session Scope

Session Scope 클라이언트(웹 브라우저) 당 하나의 session 객체가 생성, 관리한다. ✔︎ 웹 브라우저별로 변수(정보)를 관리하고자 할 경우 사용한다. ✔︎ 세션 객체는 상태 정보를 유지하기 위해 사용한다. 클라이언트마다 세션 정보가 다른데, 예를 들어 사용자마다 로그인 정보가 다른 것처럼 사용자별로 유지가 되어야 할 정보가 있을 때 사용한다. 그래서 각 클라이언트마다 유지해야 하는 정보들을 session scope을 이용해 유지시켜준다. ✔︎ 웹 브라우저간의 탭 간에는 세션정보가 공유되기 때문에, 각각의 탭에서는 같은 세션정보를 사용할 수 있다. ✔︎ session 객체는 프로그래밍 할 때 적당한 시간을 지정한다던가 혹은 브라우저가 닫히게 된다던가 이런 특성에 따라서 없어진다. ✔︎ Ht..

Web/Spring 2021.06.24

request scope

Request Scope 요청을 받아서 응답하기까지 객체가 유효한 영역 ✔︎ http 요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수값을 유지하고자 할 경우(forward 되는 동안 유지하고 싶은 정보가 있을 경우) 사용한다. WAS에서 request와 response 객체를 만드는데, 이 객체가 요청이 들어와서 응답이 나갈 때까지 유지가 되는 객체이다. 예를 들면 1번 JSP(서블릿)에서 만들었던 값을 다른 JSP(서블릿)에서 이용할 수 있도록 범위를 유지시켜주는 것이 request 객체이다. ✔︎ 응답이 나가게 되면 해당 만들어졌던 request와 response 객체는 없어진다. ✔︎ JSP에서는 request 내장 변수를 사용한다. 값을 저장할 때 : request.setAttribut..

Web/Spring 2021.06.24

Page scope

Page scope 하나의 JSP 페이지 내에서만 객체를 공유하는 영역(JSP만) ✔︎ JSP가 실행되는 동안에만 정보를 유지하고 싶은 경우에 사용한다. ✔︎ JSP 페이지에서 pageContext라는 내장 객체로 사용 가능하다 값을 저장할 때 : pageContext.setAtrribute 값을 읽어 들일 때 : pageContext.getAttribute ✔︎ forward가 될 경우 해당 Page scope에 지정된 변수는 사용할 수 없다. 실제 실행하는 동안만 page context (scope) 사용된다는 뜻 forward : WAS의 서블릿이나 JSP가 요청을 받은 후 그 요청을 처리하다가, 추가적인 처리를 같은 웹 애플리케이션 안에 포함된 다른 서블릿이나 JSP에게 위임하는 경우 ✔︎ 마치 ..

Web/Spring 2021.06.24

Scope

Scope에는 4가지 종류가 있다. 1. Page 페이지 내에서 지역변수처럼 사용 JSP가 실행되는 동안에만 정보를 유지하고 싶은 경우에 사용 더 알아보기 ☞ 2021.06.24 - [Web/Spring] - Page scope 2. Request http요청을 WAS가 받아서 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우 사용 더 알아보기 ☞ 2021.06.24 - [Web/Spring] - request scope 3. session 웹 브라우저 별로 변수가 관리되는 경우 사용. 더 알아보기 ☞ 2021.06.24 - [Web/Spring] - Session Scope 4. application 웹 애플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우 사용 더 알아보기 ☞ 2021.06.2..

Web/Spring 2021.06.24

제어의 역전(IoC), 의존성 주입(DI)

제어의 역전 ( IoC (Inversion of Control) ) 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 스프링 컨테이너가 필요에 따라 개발자 대신 Bean들을 관리(제어)해주는 행위 (내가 뭔가 호출하는게 아니라 객체 관리 프로그램이 내 코드를 대신 호출해줌) 제어권이 뒤바뀐다 ! 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 하지만 Spring에서는 xml파일 또는 어노테이션 방식으로 스프링 컨테너에 Bean(객체)를 등록하기만 하면, 스프링 컨테이너에서 Bean의 생명주기(생명 -> 의존성 설정 -> 초기화 -> ..

Web/Spring 2021.06.07

객체 지향 설계와 스프링

스프링 이야기에 왜 객체 지향 이야기가 나오는가? 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원 DI(Dependency Injection) : 의존관계, 의존성 주입 DI 컨테이너 제공 (: 자바 객체들을 컨테이너 안에 넣어놓고 안에서 의존관계들을 연결해주고 주입해주는 기능) 2021.06.07 - [Web/Spring] - 제어의 역전(IoC), 의존성 주입(DI) 이것들을 활용해야 클라이언트 코드의 변경 없이 기능 확장할 수 있다. 쉽게 부품을 교체하듯이 개발할 수 있다. ✔︎ 순수하게 자바로 OCP, DIP 원칙을 지키면서 개발을 해보면, 결국 스프링 프레임워크를 만들게 된다.(더 정확히는 DI 컨테이너) 정리 모든 설계에 역할과 구현을 분리하자. 자동차, 공연의 예를 떠올려보자..

Web/Spring 2021.06.01

좋은 객체 지향 프로그래밍이란?

객체 지향 특징 추상화 캡슐화 상속 메시지 객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.(협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 ➡︎ 유연하고 변경이 용이한 객체지향의 방법 객체 지향의 핵심 : 다형성(Polymorphism) 다형성의 실세계 비유 역할과 구현으로 세상을 구분 (역할이 인터페이스, 구현이 인터페이스가 구현한 객체) 예) 자동차 역할을 3개의 다른 자동차로 구현을 ..

Web/Spring 2021.06.01

Spring (스프링)이란 ?

'스프링' 단어 ? 스프링이라는 단어는 문맥에 따라 다르게 사용된다. 스프링 DI 컨테이너 기술 스프링 프레임워크 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계 스프링 프로젝트 필수 스프링 프레임워크 : 제일 핵심 ★ 스프링 부트 : 이 모든 기술(프로젝트)을 편리하게 사용할 수 있도록 도와주는 것. 선택 스프링 데이터 : 관계형 데이터베이스(NoSQL, Mongo DB 등)를 편리하게 사용할 수 있도록 도와주는 것 (Spring Data JPA를 많이 사용한다.) 스프링 세션 : 세션 기능을 편리하게 사용할 수 있도록 도움 스프링 시큐리티 : 보안 관련 스프링 Rest Docs : API문서를 편리하게 해주는 것. 스프링 배치 : 배치 처리에 특화된 기술 스프링 클라우드 : 클라우드 ..

Web/Spring 2021.06.01

웹 도구 Spring Initializr 이용하여 Spring 프로젝트 생성하기

1. 스프링 부트 스타터 사이트로 이동 https://start.spring.io 2. 원하는 사항 선택 Project : 빌드 관리 도구 선택 요즘은 Gradle을 많이 쓰는 추세이다. 상세한 건 빌드 관리 도구 글 참고 2021.05.27 - [CS] - 빌드 관리 도구 (Maven vs Gradle) Language : 언어 선택 Spring Boot : 버전 선택 버전 뒤에 (SNAPSHOT)이 붙어 있다면 아직 만들고 있는 버전이고, (M1)은 아직 정식 release 된 버전이 아니다. 따라서 정식 release 중에서 가장 최신의 버전으로 선택한다. 글을 작성하는 현재는 2.5.0을 선택해주었다. Group : 기업 도메인명 같은 것을 넣어준다. 개인 프로젝트라면 자신의 블로그 도메인을 사용..

Web/Spring 2021.05.27