부트캠프 - 온보딩
★ Spring MVC
1. 원격 프로그램의 실행
(1) 한 컴퓨터에서 다른 컴퓨터의 프로그램을 실행하려면
① 서버쪽에서 프로그램을 바깥에서 돌릴 수 있도록 등록해 놓아야함
② URL과 프로그램을 연결해 놓아야함
(2) 위 두가지를 했을 경우, 브라우저로 원격 프로그램을 실행할 수 있다
(3) class 앞에 @Controller는 서버에 프로그램을 등록해 놓는 것이고, 메서드 앞에 @RequestMapping("...)는 URL과 프로그램을 연결해 놓는 것이다
(4) 그런데 메서드가 인스턴스 메서드인데 호출할 수 있는 이유가 뭘까? 인스턴스 메서드를 호출하려면 누군가 객체를 생성한다는 뜻임
(5) 메서드가 private이어도 되는 이유는 뭘까? Reflection API를 사용하기 때문임. 이는 클래스 정보를 얻고 다룰 수 있는 강력한 기능인데, 클래스 설계도를 가져와서 인스턴스를 만들고 private메서드를 실행할 수 있기 때문임
2. AWS에 배포하기
(1) AWS 인스턴스에 톰캣의 webapps 폴더에 war파일 넣기
(2) 그 후 톰캣 실행
3. HTTP 요청과 응답
(1) http://.../che/hello로 요청하면 tomcat이 요청 정보를 HttpServletRequest 객체로 만들어줌
(2) 이는 마치 main메서드의 String[] args로 전달되는 것과 비슷함
4. 클라이언트와 서버
(1) Controller의 메서드에 매개변수를 쓰면 스프링이 HttpServletRequest 객체를 만들어서 넣어줌
(2) 우리는 그 객체를 활용하면 됨
(3) 어떤 서비스를 제공하는지에 따라 서버의 종류가 나뉨(ex. EmailServer, FileServer, WebServer)
(4) 만약 1대의 PC에서 여러개 서버가 돌아가려면? PC의 IP주소만으로 어떤 서버에 요청할지 구분할 수 없음
(5) 따라서, 포트번호도 필요함
(6) 한 포트에는 한 서버만 있을 수 있는데, 이 상태를 서버가 포트를 리스닝 한다고 함
(7) Web Server란 웹을 서비스하는 것
(8) Web Application Service란 웹 어플리케이션(웹 프로그램)을 서비스 하는 것임
(9) 이전에는 프로그램을 모두 클라이언트에 설치해야 했음
① 그래서 update 문제가 발생 : 프로그램이 update됐을 경우, 모든 PC의 프로그램이 update돼야함. 그러나 서버는 서버만 하면 됨
② 클라이언트의 저장 공간이 부족 문제 발생. 그러나 서버는 서버에서만 이용하면 됨
(10) 톰캣의 내부 구조
① 요청이 포트를 통해 서버로 전달됨
② ThreadPool에서 하나의 Thread가 일처리를 시작
③ Connector에서 요청을 분류해서 요청 객체를 만듬
④ Host -> Context -> Servlet을 거친 후 클라이언트에 응답함
코테준비
1. 백준 5430 - AC
: 앞과 뒤에서 번갈아 빼야하므로 deque을 이용함. 빈 문자열을 split하면 빈 문자열 하나가 나오는 것 주의
2. 백준 3190 - 뱀
: 덱을 이용했지만 큐를 이용해도 될 것 같다. 빡빡한 구현 문제였다. 제한시간 안에 풀지 못한 점...!!
오늘 하루도 고생 많았다... 힘든 하루였다..!!
'TIL(Today I Learned)' 카테고리의 다른 글
2023.07.19 (0) | 2023.07.19 |
---|---|
2023.07.18 (0) | 2023.07.18 |
2023.07.14 (0) | 2023.07.14 |
2023.07.13 (0) | 2023.07.13 |
2023.07.12 (0) | 2023.07.12 |