0. 메서드 (return, 매개변수, 호출)
1. 상속 (추상화) - 타입 일치
2. 인터페이스 - 동적 바인딩 (오버라이드)
3. 제네릭
4. 스레드 (내부가 다 스레드로 구현되어 있음) 몰라도 가능
5. 소켓 (내부다 다 소켓으로 구현되어 있음) 몰라도 가능
단, 모르고 코딩을 하는 것은 코더가 되는 것!
개념은 알고있어야 함
6. 객체지향 아키텍처(SOLID)
- SRP : 하나의 클래스에 최소한의 책임을 가져야 한다.
(최대한 메서드를 줄이는 것)
하나의 클래스는 단일 책임을 가진다.
무조건 하나의 책임을 가지고 있는 것은 아니지만
최대한 책임을 분리시켜야 한다.
하지만 하나의 메서드에는
꼭 하나의 책임만 가지고 있어야 한다.
- DIP : 구체적인 것이 아닌 추상적인 것에 의존한다.
7. HTML/CSS
8. 자바스크립트 (따로 공부해야 함)
9. 아파치/톰캣 (소켓 서버:8080)
- 서버소켓(리스너 : 요청받고 request, response 객체 생성),
소켓(응답)
- request 생명주기 : 클라이언트(새로운 스레드) 요청 시 request 생성,
응답 시 request 종료
10. 서블릿 (자바언어로 http 프로토콜이 적용된 소켓 클래스
-> 응답 시 버퍼에 html 코드를 담아 줌)
- 서블릿으로 버퍼에 json을 응답해줘도 될까? 된다!
뭘 담아줘도 가능하고 응답만 해주면 됨
11. 서블릿으로 html 코드를 응답하는게 불편해 나온 것
-> JSP (자바 서블릿 페이지)
- HTML 코드에 자바 코드를 추가하는게 매우 편함
- jsp를 요청하면 1번으로 원본 서블릿 파일로 변해야한다.
내 입장에서는 html 코드에 자바 코드를 섞는데
톰캣의 Jasper 라이브러리가
이 파일을 서블릿 파일로 변한다.
.jsp 파일 -> .java 파일 (서블릿)
2번 .class 컴파일 후 실행하면
3번 html 코드가 나오고
4번 아파치에게 돌려준다
5번 아파치는 html 코드를 버퍼로 클라이언트에게 응답해준다.
이렇게 중간에서 바꿔주는 애들을 미들웨어라고한다.
Jasper!!, 번역가임 !!!
12. MVC
- 클라이언트 : 컨트롤러에 의존적
- C (컨트롤러) : 레파지토리에 의존적
- M (모델.java, 레파지토리.java) : DB에 의존적
- V는 뷰!!
13. DispatcherServlet
- FrontController 찾아주는 역할