웹 개발 역량강화를 위해 내일배움카드로 수강할 수 있는 백엔드 교육과정을 찾아보았다. 남궁성&박매일 님의 '나도 할 수 있는 Java & Spring 웹 개발 종합반'이 교육일정이나 커리큘럼이 무난한 것 같아서 수강하게 되었다. 8주 총 65시간의 과정을 포스팅하고자 한다.
커리큘럼
주차 학습 내용 1주차 생각,표현,코딩하기란? 2주차 Java 기초 다지기1 3주차 Java 기초 다지기2 4주차 객체지향 프로그래밍 시작하기 추가1 객체지향 프로그래밍 설계하기 5주차 Spring 시작하기 6주차 Spring MVC part1 7주차 Spring MVC part2 8주차 Spring MVC part3 추가2 Spring DI 와 AOP 파이널 프로젝트
컨트롤러의 @Controller + @RequestMapping = 서블릿의 @WebServlet 이다.
서블릿은 HttpServletdml 상속을 받지만 컨트롤러는 받지 않는다.
서블릿은 class에 붙이지만 컨트롤러는 메소드에 붙인다.
서블릿은 기본적으로 싱글톤이다. (1개의 인스턴스만 생성해서 재활용)
둘은 유사하지만 컨트롤러가 좀 더 발전된 형태이다.
서블릿과 스프링은 둘다 싱글톤이지만
서블릿은 요청이 들어오면 그때 초기화를하는 lazy-init 이고,
스프링은 요청이 오지 않아도 객체를 만들어두는 early-int 이다.
서블릿과 비슷하다. JSP로 작성하면 서블릿으로 변환한다.
JSP는 HTML안에 자바코드를 넣는 것이다.
그 내용이 다 service()안으로 들어가는 것이다.
JSP에는 기본객체가 존재한다. (생성없이 사용할 수 있는 객체)
서비스 변수의 지역변수로 선언되어 있어서 가능하다.
HTTP는 상태값을 저장하지 않는다.
4개의 저장소가 있다.
map table 형태로 key/value를 저장한다.
(1) pageContext
lv 저장(기본객체)이다.
읽기(getAttribute())와 쓰기(setAttribute())가 가능하다.
범위는 같은 페이지 안이다.
요청할 때마다 값이 초기화된다.
(2) application
전체에서 접근가능한 저장소이다. 전체에서 1개 밖에 없다.
개별적인 아이디를 저장하기에 좋은 저장소는 아니다.
읽기(getAttribute())와 쓰기(setAttribute())가 가능하다.
(3) session
클라이언트 마다 1개씩 존재하는 개별 저장소다.
개별적인 아이디를 저장히기에 좋은 저장소다.
세션은 쿠키를 이용해 각 세션이 누구의 것인지 알 수 있다.
모든 페이지에서 접근 가능하다.
서버 부담이 제일 큰 저장소라서 최소한의 데이터만 저장한다.
@WebServlet으로 서블릿을 URL에 매핑할 때 사용한다.
URL로 요청이 들어왔을 때 어떤 서블릿이 처리할지를 결정하는 과정이다.
(loadOnStartup 옵션은 미리 초기화해두는 옵션)
스프링에서도 @RequestMapping과 같이 사용하는 URL 패턴이 존재한다.
스프링은 모든 요청을 DispatcherServelt이 다 받아서 자체적으로 가지고 있는 매핑으로 처리한다.