그냥 배우는 언어 기록하는 공간 :D

패캠 학습일지

[패스트캠퍼스] Spring 강의 5주차 학습일지

꾸준히_노력하기 2023. 12. 12. 21:08
배운 내용 정리

 

[ ch. 01 Spring 시작하기 ]

05. AWS에 서버 구축하기(1) - AWS 가입

 

> 관련 용어 (참고)

 

1. on-Premise

: 서버를 직접 운영하는 방식.

: 관리자가 필요함.

: 회사에 컴퓨터를 넣거나 IDC를 사용함.

 

2. Sercerless

: 서버 작업을 서버 내부가 아닌 클라우드 서비스로 처리함.

: 서버가 없다는 것이 아님.

: Amazon S3, Amazon RDS (클라우드 서비스 예시)

 

3. Region

: 데이터 센터가 물리적으로 존재하는 곳.

 

4. CND (Content Delivery Network)

: 정적 리소스를 빠르게 제공할 수 있게 전 세계의 캐시서버에 복제해 주는 서비스.

: 이미지나 자주 쓰는 라이브러리 같은 것을 빠르게 제공할 수 있게 해 주는 서비스.

 


 


[ ch. 02 Spring MVC ]

01. 원격 프로그램의 실행

 

> 원격 프로그램 실행
: 브라우저와 tomcat과 같은 WAS(Web Application Server)가 있어야 함.
: 브라우저에서 URL을 치면, tomcat이 요청을 받아서 프로그램을 실행하는 것.
: 다른 컴퓨터에 있는 모든 프로그램을 실행할 수는 없음.
: 외부에서 브라우저로 서버에 있는 프로그램을 실행하기 위해서는 두 가지 작업을 해 주어야 함.

: 프로그램 등록, URL과 프로그램 연결

 



1. 프로그램 등록
: 외부에서 호출할 수 있도록 하기 위해서.

2. URL과 프로그램 연결
: 프로그램을 실행하기 위해서 어떤 URL을 입력해야 하는지 정해주기.

 


> 원격 프로그램 실행 실습

 

 

 

+ ch2

   : context root, project root

+ url 뒤에 /hello 작성하기
   : 브라우저에서 url을 입력했을 때 url과 연결된 메서드가 호출되는 것임.

 


 

 

@Controller (컨트롤러 애너테이션)

: 클래스 앞에 붙여주면 됨. 

 

@RequestMapping 
: 호출하려는 메서드에 작성.
: /hello와 연결된 메서드가 호출됨. 

 

+ 메서드의 이름은 중요하지 않음. main( )이 아니어도 됨. 개발자가 편한대로 작성.

 

 


 


 

> 인스턴스 메서드 실습

 

 

 


 

 

 


 

 

 


 

 


02. AWS에 배포하기

 

 


> AWS에 배포하기 실습

 

 


03. HTTP 요청과 응답 - 실습

 

 

+ 참고

java 인터프리터가 YoilTeller 클래스의 main을 호출할 때, 뒤에 있는 날짜 값으로 문자열 배열을 만듦.
명령줄 자체가 다 문자열이기 때문에 문자열로 들어감. (String[ ] : 스트링배열)
java interpreter가 문자열 배열을 만들어서 'args'한테 넘겨주는 것임. → 'args'는 '문자열 배열'을 가리킴.
따라서 메인 메서드 안에서 문자열 배열을 사용할 수 있게 되는 것임.

 


> HttpServletRequest

: 원격 프로그램을 브라우저로 URL을 입력해서 호출하면,

  톰캣이 'HttpServletRequest'라는 객체를 만듦.
: 요청한 정보를 저장한 뒤에 메인 메서드의 매개변수로 넘겨줌.
: 사용자가 필요한 것을 매개변수를 선언하면 톰캣이 자동으로 넣어줌.
: request 객체를 사용해서 요청 정보를 얻을 수 있음.
: YoilTeller처럼 URL을 이용해서 요청했을 때, 요청한 URL 정보를 받을 수 있음.

 

+ 재정리

: 브라우저를 이용해서 URL을 입력해 요청하면,

  해당 서버에 있는 톰캣이 요청을 받아 객체에 저장함.
: 객체를 생성한 다음 URL 정보를 나누어서 전부 담음.

  그 다음 메서드의 매개변수로 제공함.
: 메서드의 매개변수는 개발자가 원하는대로 작성할 수 있음.

  스프링이 자동으로 처리해 줌.
: 메서드 내에서 객체를 이용해서 우리가 원하는 정보를 얻을 수 있음.

 


> HttpServletRequest의 메서드

: 다 외울 필요 없이 필요할 때 참고하기.
: 'HttpSevletRequest'라는 객체를 받게 되고,

  객체의 메서드를 호출하면 요청한 URL의 정보를 얻을 수 있음. 

 


 

http://52.78.79.190:8080/ch2/requestInfo?year=2023&month=12&day=15

 

http → getScheme( )

52.78.79.190 → getServerName( )

8080 → getServerPort( )

 

ch2  getContextPath( )

requestInfo  getServletPath( )

 

http://52.78.79.190:8080/ch2/requestInfo → getRequestURL( )

/ch2/requestInfo → getRequestURI( )

year=2023&month=12&day=15 → getQueryString( )

 


 

 HttpServletRequest의 메서드 실습

 

 

 


> getQueryString( )

 

?year=2023&month=12&day=15

 

String year = request.getParameter("year");

String month = request.getParameter("month");

String day = request.getParameter("day");

 

Enumeration enum = request.getParameterNames( );Map paramMap = request.getParameterMap( );

 

    → name

    → value

 


 

> QueryString

: 개발자가 요청할 때 물음표 뒤에 추가적인 데이터를 보낼 수 있음.
: QueryString에 있는 값을 읽으려면 getParameter 메서드를 이용해야 함.
: name value가 한 쌍으로, 값이 붙어 있음.
: 구분자는 '&', name value 간의 구분자는 '='을 사용함.
: 문자열이기 때문에 결과가 문자열로 나옴. (URL 자체는 전부 문자열)
: 결과를 숫자로 변환하는 경우 'Integer.parseInt'와 같은 메서드를 추가적으로 사용해야 함.

 


 

> Enumeration

: name만 뽑아서 Enumeration으로 읽을 수 있음.
: Enumeration은 old 버전, iterator은 new 버전으로, 

  서로 같은 것이며 사용법이 유사함.

> Map
: getParameterMap 메서드가 QueryString을 Map에 담아서 반환해 줌.

 

※ 이러한 메서드도 존재하지만 대체로 getParameter 메서드를 많이 사용함.

 


> getQueryString( )

 

?year=2023&year=2024&year=2025

 

String[ ] yearArr = request.getParameterValues("year");

 

    → name

    → value

 


 

> String[ ]

name이 전부 같은 경우에는 getParameterValues로 받을 수 있음.
name이 year인 값을 배열로, yearArr을 참조변수로 받을 수 있음.

 


> getQueryString( ) 실습

 

 

 

 


 

 

 


04. HTTP 요청과 응답 - 예제

 

 


> TwoDice 실습

 

 

 


 

 

 

 


 


05. 클라이언트와 서버

 

> 클라이언트 (client)
: 서비스를 요청하는 애플리케이션 또는 컴퓨터.

 

> 서버 (server)

: 서비스를 제공하는 애플리케이션 또는 컴퓨터.

 


> 서버의 종류
: 어떤 서비스를 제공하는지에 따라 다양한 종류의 서버가 존재함.

  ex. Email server, File server, Web server


: Web server는 브라우저를 통해 받을 수 있는 모든 서비스를 제공한다고 볼 수 있음.
  ex. 문서 읽기, 이미지 보기, 동영상 보기

 


 

 


> 웹 애플리케이션 서버 (WAS)

: 웹 애플리케이션을 서비스하는 서버. (ex. 톰캣)

: 서버에 프로그램을 설치해 놓고, 클라이언트가 이 프로그램을 사용할 수 있도록 해 주는 것.
: 우리가 만든 것을 클라이언트가 원격 호출함.

: 업데이트의 용이성과 클라이언트의 저장 공간이 절약되는 장점이 있음.

 

+ 업데이트의 용이성

: 예전에는 프로그램을 클라이언트에 설치했기 때문에 업데이트에 대한 문제가 발생했음.
: 서버에 프로그램을 설치하면 서버 하나만 업데이트하면 됨.

 

+ 클라이언트 저장 공간 절약
: 클라이언트에 프로그램을 설치하지 않아도 되니까 클라이언트의 저장 공간이 절약됨.

 

 

후기

 

스프링.. 설치할 개발 도구도 많고,

개발 도구 설치 과정에서 하나하나 오류가 나서

스프링 강의를 본격적으로 듣기 전부터 벌써 지쳐버렸다...

여태 강의를 들으면서 가장 스트레스를 받는 시간이었던 것 같다.

선생님이 하시는 대로 하는데 왜 결과가 다른 건지..

 

질문하면 알려주시겠지만, 내 성격상 끝까지 혼자 해결하려고 하는 편이라

무한 검색의 굴레.. 다행히도 나랑 같은 오류를 겪은 사람이 있긴 했다 하하..

너무 별거 아닌 오류여서 나중에 해결했을 때 얼마나 허탈하던지..

앞으로 개발자의 삶은 이렇겠지 싶어서 조금 무서웠다..ㅋㅋㅋㅋㅋ

컴맹인 걸 어쩌겠어 힘내자...!

 

다음 주도 화이팅!