HTTP 기반으로 동작한다.정적 리소스를 제공, 기타 부가기능정적(파일) HTML, CSS, JS, 이미지, 영상ex) Nginx, Apache웹 브라우저에서 HTTP로 html을 요청하면 웹 서버에서 해당하는 html를 응답해준다.HTTP 기반으로 동작한다.웹 서버
위와 같이 WAS에 Form 데이터가 POST로 요청이 들어오면 WAS는 비즈니스 로직을 실행하기 전에 위와 같이 수 많은 작업들을 해야한다.하지만 Servlet을 사용하면 위와같이 요청 메시지를 파싱하고 읽고 응답 메시지를 생성하는 것 까지 전부 자동으로 해결해준다.
웹 브라우저에서 WAS에 HTTP 요청 메시지를 보낸다.웹 브라우저와 WAS가 TCP/IP 커넥션이 연결된다.Servlet을 호출한다.Q) Servlet은 누가 호출할까?애플리케이션 코드를 한하나 순차적으로 실행하는 것은 쓰레드자바 메인 메소드를 처음 실행하면 mai
고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공한다.주로 웹 브라우저만약 /hello.html을 요청하면 웹서버에서 이미 생성되어 있는 hello.html을 응답해준다.동적으로 필요한 HTML 파일을 생성해서 전달한다.웹브라우저는 HTML을 해석한다.H
HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편할 것이다.Servlet은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다.그리고 그 결과를 HttpSevletRequest 객체에 담아서
하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면 너무 많은 역할을 하게 되고 결과적으로 유지보수가 어려워진다.비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고 UI를 변경할 일이 있어도 비즈니스 로직이 있는 해당
클라이언트가 호출하면 공통 로직을 컨트롤러 마다 각각 짜야했다.클라이언트에가 호출하면 Front Controller에서 공통 로직을 처리한 후 컨트롤러가 호출된다.프론트 컨트롤러 Servlet 하나로 클라이언트의 요청을 받는다.프론트 컨트롤러가 요청에 맞는 컨트롤러를
위의 프론트 컨트롤러는 한가지 방식의 컨트롤러 인터페이스만 사용할 수 있다.만약 프론트 컨트롤러가 다양한 방식의 컨트롤러를 사용할 수 있게 하려면 어댑터 패턴을 이용하면된다.핸들러 어댑터 중간에 어댑터 역할을 하는 어댑터가 추가되었는데 이름이 핸들러 어댑터다.어댑터 역
동작 순서핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다.핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행한
핸들러 매핑에서 컨트롤러를 찾을 수 이썽야 한다.ex) 스프링 빈의 이름으로 핸들러를 찾을 수 있는 핸들러 매핑이 필요하다.핸들러 매핑을 통해서 찾은 핸들러를 실행할 수 있는 핸들러 어댑터가 필요하다.ex) Controller 인터페이스를 실행할 수 있는 핸들러 어댑터
스프링 부트는 InternalResourceViewResolver라는 뷰 리졸버를 자동으로 등록한다.이 때 application.yml에 등록한 설정 정보를 사용해서 등록한다.핸들러 어댑터를 통해 new-form이라는 논리 뷰 이름을 획득한다.new-form이라는 뷰
RequestMapping >- 스프링은 애노테이션을 활용한 매우 유연하고 실용적인 컨트롤러를 만들었는데 이것이 바로 @RequestMapping 애노테이션을 사용하는 컨트롤라다. > - RequestMappingHandlerMapping RequestMappingH
스프링 MVC는 @ModelAttribute가 있으면 다음을 실행한다.HelloData 객체를 생성한다.요청 파라미터 이름으로 HelloData 객체의 프로퍼티를 찾는다.그리고 해당 프로퍼티의 setter를 호출해서 파리머터의 값을 입력(바인딩)한다.ex) 파라미터 이
InputStream(Reader) : HTTP 요청 메시지 바디의 내용을 직접 조회OutputStream(Writer) : HTTP 응답 메시지의 바디에 직접 결과 출력 HttpEntity : HTTP header, body 정보를 편리하게 조회메시지 바디 정보를 직
뷰 템플릿으로 HTML을 생성해서 응답하는 것이 아니라, HTTP API처럼 JSON 데이터를 HTTP 메시지 바디에 직접 읽거나 쓰는 경우 HTTP 메시지 컨버터를 사용하면 편리하다.@ResponseBody를 사용HTTP의 Body에 문자 내용을 직접 반환한다.vie
HTTP 메시지 컨버터는 스프링 MVC 어디쯤에서 사용되는 것일까?@RequestMapping을 처리하는 핸들러 어댑터인 RequestMappingHandlerAdapter에 있다.컨트롤러의 파라미터, 애노테이션 정보를 기반으로 전달 데이터를 생성한다.컨트롤러를 호출한
다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다.<label for="itemName" th:text="\`\`\`메시지에서 설명한 메시지파일(messages.properties)을 각 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다.
메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면 되는데 MessageSource는 인터페이스다.따라서 구현체는 ResourceBundleMessageSource를 스프링 빈으로 등록하면 된다.basenames: 설정 파
로그인을 하면 (ID, Password 정보를 전달하면) 서버에서 해당 사용자가 맞는지 확인한다.서버에는 세션 저장소가 있는데 만약 사용자 정보가 맞다면(로그인이 성공했다면)세션 ID(추정 불가능한 값)를 생성해 회원 정보를 저장한다.클라이언트와 서버는 결국 쿠키로
세션을 생성하려면 request.getSession(true)를 사용하면 된다.request.getSession(true) 세션이 있으면 기존 세션을 반환한다.세션이 없으면 새로운 세션을 생성해서 반환한다.request.getSession(false)세션이 있으면 기존
필터를 적용하면 필터가 호출 된 다음에 서블릿이 호출된다.그래서 모든 고객의 요청 로그를 남기는 요구사항이 있다면 필터를 사용하면 된다.참고로 필터는 특정 URL 패턴에 적용할 수 있다./\* 라고 하면 모든 요청에 필터가 적용된다.참고로 스프링을 사용하는 경우 서블릿
스프리 인터셉터도 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술이다.서블릿 필터가 서블릿이 제공하는 기술이라면 스프링 인터셉터는 스프링 MVC가 제공하는 기술이다.둘다 웹과 관련된 공통 관심 사항을 처리하지만 적용되는 순서와 범위 그