인프런 스프링부트 개념정리(이론)
이 글은 다음 강의의 이론 정리 글 입니다.
엄청나게 큰 성이 있는데 이 입구에 문지기가 있다. 문지기는 스스로 일을 할 수 없기 때문에 관리자가 문지기한테 문서를 던진다. 관리자에 따라 문서는 달라질 수 있고 문지기는 그 문서에 적힌 대로만 일을 하면 된다. 우리는 문지기(web.xml)가 일을 관리자에 따라 다르게 할 경우가 없다. 이 파일을 토대로 일을 한다.
외부에서 사람 a가 문을 통해 들어온다. 초기 파라미터에 암구호는 '왈라'라고 적혀있었다. a가 성 안을 마음껏 돌아다니다가 누군가 암구호를 대라고 했을 때 '왈라'라고 대답한다면 통과! 하지만, 문을 통해 들어온 게 아니라 몰래 잠입한 사람 b한테 암구호를 대라고 한다면 대답을 못할 것이다.
따라서 초기 파라미터라는 것은 암구호처럼 성안의 어디서든 언제든 가지고 있는 매개 변수를 의미한다.
어떤 집에 a가 들어오려고 할 때, "너 누구야! 했는데 나 너 자식이야. 너 내 자식이야? ok" 하고 인증(like 민증, 공인인증서)을 통해서 들어오는 것이 session이다.
session에 3일이라는 유효시간을 설정해주면 3일이 지난 후 성에서 추방을 당해야 한다. 만약 문을 통해 들어온 a가 유효시간을 늘리고 싶다면 문지기한테 와서 세션을 초기화하면 된다. 하지만 몰래 들어온 사람 b는 문지기한테 갈 수 없기 때문에 세션마다 추방을 당하게 된다.
성 안에는 '가', '나', '다', '라' 건물이 있다. 문을 통해 들어온 a는 자신의 목적지가 성 안의 '다' 건물이라고 말한다. 그러면 문지기는 '다' 건물로 가는 길을 설명해준다. 이런 것을 servlet 매핑이라고 한다. a가 요청한 자원, 식별자, location인 '다' 건물이 어디라는 것을 정확하게 알려주고(ex. 서울 용산구), 그 쪽으로 이동할 수 있게 도와준다.
Servlet/JSP 매핑시(web.xml에 직접 매핑 or @WebServlet 어노테이션 사용)에 모든 클래스에 매핑을 적용시키기에는 코드가 너무 복잡해지기 때문에 @FrontController 패턴을 이용함 → 다음 시간에!
a가 쌀한포대를 들고 왔다. 문지기는 a의 Mime Type이 무엇인지 물어본다. 그러면 a는 쌀이요!라고 말할 것이다.
Mime Type이라는 것은 a가 들고 온 data의 type이다. 성에 들어오는 사람들은 데이터를 들고 올 수도 있고 안들고 올 수도 있다. 보통 안들고 오는 경우는 이 성에 들어와서 보기만 하기 때문에 http 통신의 get 방식(select)을 쓴다. 반면, 쌀을 들고 온 a는 일단 쌀 창고에 데이터인 쌀을 보낸다. 성에서는 이 쌀이 먹을 수 있는 것인지 확인을 하고 사람들에게 팔기 위해서 깔끔하게 가공을 한다. 만약 Mime Type을 잘못 파악해서 물 창고로 보내게 되면 물 창고에서는 쌀을 가공할 수 없기 때문에 에러가 발생한다.
즉, 문지기가 문을 통해 들어오는 사람들이 어떤 물건을 들고 들어오는지 가방 검사를 하는 것이 Mime Type 매핑이다.
a가 목적지도 안정하고 데이터도 안들고 오고 맨 몸 상태로 문지기한테 왔다. 그냥 왔는데요? 라고 하면 문지기가 어디로 보내야할지 멘붕이 온다. 그래서 필요한게 welcome file list이다. welcome file list라는 것은 광장에 있는 일거리와 같다. 문지기는 그냥 온 a를 광장으로 보내고 welcome file list를 건네준다.
성 안에는 '가', '나', '다', '라' 건물이 있다. 문을 통해 들어온 a는 자신의 목적지가 성 안의 '파' 건물이라고 말한다. 문지기는 '파?!'는 없는데 하고 뚝딱이가 된다. 그러면 관리자는 문지기한테 너가 모르는 곳은 다 error page(이상한 광장)로 던지라고 명령한다.
필터는 A나라 성에 B나라 사람이 들어오지 못하게 만드는 것을 말한다. 또는 a가 총기를 소지하고 있을 때 A나라가 총기 소지 불가능한 나라라면, a한테서 총기를 뺏고 A나라로 들여보내주는 것이 필터가 하는 일이다.
고급 관리자 집이 있을 때, 여기에 양반 한 사람이 있는데 이 사람이 술을 너무 잘 먹어서 같이 술 친구를 해줄 술 잘먹는 사람이 필요했다. 그래서 이 양반이 "문지기야 너 술 잘먹는 사람 좀 찾아내줘"라고 하자 문지기가 "저 해야할 일이 너무 많아요. 그거까지 할 시간 없음."이라고 했다. 그래서 리스너가 필요하다. 리스너는 문지기의 대리인 역할로 문지기 옆에서 술 잘 먹는 사람만 찾아내고 테스트 해본다. 진짜 술을 잘 마신다면 데리고 간다.
이상한 사람 들어오면 쫓아내기, 이상한 나라에서 들어오면 쫓아내기, 현상수배범 감옥으로 보내기 등등