강의 중간중간 좋은 자료들이 있어 같이 설명드리도록 하겠습니다.
우선, HttpServletRequest 객체에서 종종 사용하는 메서드를 정리한 자료입니다. 메서드의 이름들이 위치에 맞게 직관적으로 만들어져 있어 하나의 주소의 명칭들을 자세히 알 수 있습니다.
그리고 이거는 제가 몰랐는데 유용한 기능이라고 생각되어 캡쳐했습니다. GET 파라미터의 이름이 중복될 경우 이걸 배열로 받을 수 있다는 내용인데요. 날짜별 자료 조회 같은 기능의 경우 파라미터값을 어떻게 다변화 할까 고민할 필요 없이 바로 이렇게 배열로 받으면 되겠습니다.
이후에 강의를 수강하면서 들은 정보들을 간략하게 요약해보겠습니다.
웹서버에 포트번호를 안붙이면 80번이 자동으로 붙습니다. 따라서 탐캣같은 경우 8080포트가 기본 포트이기 때문에 이를 간략화 하려면 탐캣의 기본포트를 80으로 변경하시면 포트번호를 생략할 수 있습니다.
Web Application Server(was)
서블릿(Servlet) - 작은 서버 프로그램, 컨트롤러와 비슷한 개념이라고 합니다.
서버안에는 서비스가 있습니다.
그리고 그 서비스 안에 커넥터(클라이언트가 요청했을 때 scheme에 따라 처리하는 기능)와 엔진이 있습니다.
엔진 안에는 호스트가 있습니다. 호스트는 n개 가능합니다.
각 호스트마다 n개의 컨텍스트가 존재합니다. 이것이 Web App의 단위라고 합니다.
이 웹앱안에 여러개의 서블릿이 존재하면서 프로그램이 구동되는게 웹 서버의 구조라고 합니다.
www.something.co.kr이라는 호스트에 /event라는 컨텍스트 안에 /list라는 서블릿이 코드에 따라 기능을 실행한 후 클라이언트로 실행 결과를 돌려주는게 바로 웹이다.
탐캣 conf 폴더 안의 server.xml과 web.xml이 전역설정 파일이고,
이후 각 프로젝트에 있는 같은 파일들로 인해 개별설정이 적용된다고 합니다.
하지만 이렇게 일일히 파일의 텍스트를 수정하는것이 아무래도 번거롭다 보니 요즘에는 annotation을 통해 설정하는 방식을 사용하는 추세라고 합니다. 여기서 주의해야 할게 텍스트파일로 수정하거나, 어노테이션을 사용하거나 둘 중 하나를 해야한다. 둘 다 하면 충돌이 일어나 오류가 발생한다고 합니다.
HTTP는 기본적으로 stateless, 클라이언트의 정보를 저장하지 않기 때문에 같은 디바이스에서 중복적으로 요청을 보내도 서버는 각각 응답합니다. 이를 보완하기 위해서 나온게 쿠키와 세션입니다.