- DispatcherServlet은 무엇인가요?

 

- FrontController

  최초 앞단에서 request 요청을 받아서 필요한 클래스에 넘겨준다. 왜? web.xml에 다 정의하기가 너무 힘듦.

  이때 새로운 요청이 생기기 때문에 request와 response가 새롭게 new 될 수 있다.

  그래서 아래의 RequestDispatcher가 필요하다.

 

- RequestDispatcher

  필요한 클래스 요청이 도달했을 때 FrontController에 도착한 request와 response를 그대로 유지시켜준다.

- DispatchServlet

  FrontController 패턴을 직접짜거나 RequestDispatcher를 직접구현할 필요가 없다. 왜냐하면 스프링에는 DispatchServlet이 있기 때문이다. DispatchServlet은 FrontController 패턴 + RequestDispatcher이다.

 

DispatchServlet이 자동생성되어 질 때 수 많은 객체가 생성(IoC)된다. 보통 필터들이다. 해당 필터들은 내가 직접 등록 할 수도 있고 기본적으로 필요한 필터들은 자동 등록 되어진다.

 

 

 

 

강의 주소 : https://youtu.be/fZv9rkwSO3g

- web.xml은 무엇인가요?

 

web.xml(문지기)

  - ServletContext의 초기 파라미터

      암구호와 같은 역할

  - Session의 유효시간 설정

      Session : 인증

      인증 유효에 대한 시간을 설정, 갱신을 위해서는 문지기에게 재요청해야 한다.

  - Servlet/JSP에 대한 정의

  - Servlet/JSP 매핑

      요청에 대한 올바른 경로로 가리키는 행위

  - Mime Type 매핑

      들고오는 데이터가 뭐냐?

  - Welcome File list

      아무 이유없이 들어오는 녀석들을 보낼 화면

  - Error Pages 처리

      모르는 주소로 들어온 경우 처리하는 화면

  - 리스너/필터 설정

      필터 : 접근하지 못하게 막는것

      리스너 : 특정 요청에 대한 web.xml(문지기)의 대리인 역할

  - 보안

      허가되지 않은 것에 대해서 거부하는 행위

 

web.xml은 웹서버에 진입하면 최초에 동작한다.

 

 

 

강의 주소 : https://youtu.be/Q_c-1-cq6YA

- 서블릿 객체의 생명주기를 알려줘요!

 

URL : 자원 접근

URI :  식별자 접근

 

스프링은 URL 접근 방식을 다 막아놓음.

URL의 예시 : http://naver.com/a.png 

URI의 예시 : http://naver.com/picture/a 

 

 

요청시 정해진 개수내의 스레드가 생성되며, 서블릿 객체는 하나만 생성된다.

(위의 그림에서 서블릿 객체가 여러개 생성된 것 처럼 표현되어 있는데, 이는 잘못된거임/강의 부분에서 댓글로 달려있음)

 

 

 

강의 주소 : https://youtu.be/wc-K2QurjSk

- 톰켓이란?

 

* 웹서버

정적인 파일을 응답해줌.

 

웹서버 : 아파치

자바코드와 같은 아파치가 이해하지 못하는 파일 요청이 오면 톰켓에게 넘긴다

톰켓은 JSP 파일을 컴파일하여 html파일로 변환 후 웹 브라우저로 response한다.

 

 

 

 

강의 주소 : https://youtu.be/fBcL6hPckyA

- HTTP가 무엇인지 궁금해요!

 

* 소켓통신

장점 : 계속 연결되어 있음

단점 : 연결 된 수가 많아질수록 부하가 증가

 

* HTTP 통신 : stateless 방식을 이용

장점 : 부하가 적음

단점 : 기존 연결했던 사용자가 누군지 모름

 

HTTP의 목적 : Html(확장자)인 문서를 전달

* HTTP의 유래

스위스의 cern 연구소에서 학자들이 논문 발표전 자신의 주제와 동일한 내용의 논문을 읽어보고 발표해야 하기에 이러한 불편함을 해소하고자 '팀버너스리'가 한 대의 서버에 모든 논문을 올리고 이를 열람하는 것에서 시작 됨.

 

 

 

강의 주소 : https://youtu.be/pifmwZWWbuY

- OOP 관점에서 모델링이란?

 

Class Car {

    int id; (PK)

    String name;

    String color;

    Engine engine;

    TimeStamp createDate;

    TimeStamp updateDate;

}

 

Class Engine {

    int id;

    int power;

    TimeStamp createDate;

    TimeStamp updateDate;

}

 

JPA 자동생성

 

Class EntityDate {

    TimeStamp createDate;

    TImeStamp updateData;

}

 

기존 Car, Engine  클래스에 EntityDate를 상속

Class Card extends EntityDate {}

Class Engine  extends EntityDate {}

 

 

- 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음.

추상화 객체를 이용해 DB에 연결

 

 

강의 주소 : https://youtu.be/vRoZAMX95Mc

- 영속성 컨텍스트란 무엇인가요?

 

영속성 : 데이터 ---> 영구적으로 저장!

                                                 DB ( MySQL을 이용할 예정)

 

컨텍스트 : context (대상에 대한 모든 정보를 다 갖고 있다는 것)

 

 

영속성 컨텍스트를 통해 자바는 DB로 데이터를 가져올 수 있고,

데이터가 변한다면 영속성 컨텍스트를 통해 동기화를 진행한다.

 

 

 

- JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체저장 불가능)

 

DB는 Player 이대호의 teamId는 Integer라는 데이터를 갖고있는거지, team 테이블의 Id, Name, Year 3가지 데이터인 오브젝트를 갖지 못한다.

 

 

자바가 주도권을 쥐고 있는 모델을 만들 수 있다.

 

 

 

강의 주소 : https://youtu.be/tXyDmqoMmKE

- ORM이란 무엇인가요?

  Object Relational Mapping

 

ORM -> 나의 하인!

 

자바와 DB의 데이터 타입은 다르다!

 

기존 순서는 DB의 데이터를 자바세상에 모델링 하는 것이다.

 

ORM은 자바세상의 데이터를 DB세상에 매핑한다.

 

JPA는 DB 커넥션, 쿼리전송 및 데이터 변환과 같은 단순 반복 작업을 쉽게 처리하게 해준다.

 

 

 

강의 주소 : https://youtu.be/4CRpndN3tP0

- JPA란 무엇인가요?

 

1. JPA란?

    1) JPA는 Java Persistence API 이다.

    2) JPA는 ORM 기술이다.

    3) JPA는 반복적인 CRUD 작업을 생략하게 해준다.

    4) JPA는 영속성 컨텍스트를 가지고 있다.

    5) JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다. (DB는 객체저장 불가능)

    6) JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계)

    7) 방언 처리가 용이하여 Migration하기 좋음. 유지보수에도 좋음.

    8) JPA는 쉽지만 어렵다.

 

- Persistence(영속성)은 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미한다.

  영속성은 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 구현한다.

 

- API

  Application(A)

  Programing(P)

  Interface(I)

 

- 프로토콜 / 인터페이스

인터페이스 : 상하관계가 존재하는 약속

 

프로토콜 : 동등한 관계가 존재하는 약속

 

- Java Persistence API(JPA)

  자바 프로그램을 할 때 영구적으로 데이터를 저장하기 위해 필요한 인터페이스

 

 

강의 주소 : https://youtu.be/ajZIPOv31yE

- MessageConverter가 궁금해요!

 

자바 Object를 누군가에게 전송할 때 JSON으로 컨버팅 해주는 것

 

자바 프로그램 ----------------------------------------------> 파이썬 프로그램

      MessageConverter: Jackson

                                 request(요청)

                                      JSON

                       <----------------------------------------------

                                 response(응답)

                                      JSON

      MessageConverter

 

 

- BufferedReader와 BufferedWriter

 

통신 규격의 시작은 영어권에서 시작되었다.

bit 단위는 0과 1로 표현되는데 사람의 언어로 인식하기 힘들었다.

영어의 한 문자는 8bit로 표현 할 수 있으며, 256가지의 문자 전송이 가능했다.

이 8bit를 1byte라 하며 통신의 단위로 정했다.

한글은 2byte, 중문은 3byte가 필요하다.

 

자바에서는 Byte Stream : 1Byte를 InputStream으로 읽는다.

InputStream은 처리 단위가 byte이기에 처리가 어렵다.

처리하기 위해서는 (char)형변환을 해야 함.

 

이를 위해 InputStreamReader로 문자 하나를 받을 수 있으며, 배열로 여러 문자를 받을 수 있다.

그러나 배열은 크기를 정하여 받아야 하기에 정해진 크기보다 적은 문자를 받을 때 낭비되는 자원이 발생한다.

이러한 문제를 해결하기 위해 BufferedReader로 감싼다.

 

BufferedReader는 가변길이의 문자를 받을 수 있다.

 

 

데이터를 쓸때는 BufferedWriter를 쓰는데 해당 메소드는 내려쓰기 기능이 없다.

그렇기에 PrintWriter라는 메소드를 사용한다.

 

JSP에서는 out라는 내장객체가 있는데 그게 BuffereWriter이다.

 

해당 기능을 이용 할 수 있는 어노테이션을 제공하는데

@ResponseBody ->  BufferedWriter

@RequestBody    ->  BufferedReader

이다.

 

 

강의 주소 : https://youtu.be/-5r52dt2HcU

+ Recent posts