HTML, TEXT, JSON, XML 등 거의 모든 형태의 데이터를 전송정적인 리소스를 제공하는 웹서버에 추가로 동적인 요청을 처리하는 기능을 가짐프로그램 코드를 실행하여 동적인 요청(데이터베이스 조회, 비즈니스 로직 수행 등)을 처리HTTP 기반으로 동작웹 서버는
하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰를 모두 처리하게 되면 너무 많은 역활을 부여하는 것이며 비즈니스 로직과 UI는 변경의 라이프 사이클이 다르기 때문에 유지보수에 있어 매우 불편하다MVC패턴은 컨트롤러와 뷰 영역으로 역활을 나누어 처리하는 것을 말한다웹애
Spring MVC에서 HTTP요청을 어떤 메서드, 클래스에 매핑할지 지정한다클래스 레벨에서는 공통 URL 경로를 지정 (prefix)메서드 레벨에서는 실제 요청 처리를 매핑/users/list로 get요청이 오면 listUsers()를 실행하여 userList 뷰 템
파일을 변경없이 그대로 서비스하는 것src/main/resources는 리소스를 보관하는 곳이고 클래스패스의 시작 경로이다src/main/resources/static/basic/hello-form.html\-> http://localhost:8080/basi
서버사이드 HTML렌더링\-> 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다.네츄럴템플릿\-> 순수 HTML을 최대한 유지하는 특성이 있다. 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고 서버를 통해 뷰 템플릿을 거치면 동적으로
빈 값이 넘어오는지, 특정 범위 값이 입력되었는지와 같은 경우는 매우 일반적인 로직이다.Spring은 이를 어노테이션으로 구현해 편리하게 사용 가능하다@NotBlank문자열에 대해 지정하는 어노테이션으로 null, "", " " 모두 에러로 지정한다@NotNull값이
패키지 구조 설계도메인이 가장 중요하다도메인 = 화면 UI, 기술 인프라 등을 제외한 시스템이 구현해야하는 핵심 비즈니스 업무 영역(item, member, login...)향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 있어야 한다web은 domain을
로그인하지 않은 사용자가 로그인멤버 전용 페이지(ex 관리자 전용 상품관리 페이지)에 접근하면 안되기 때문에 이를 제어할 수 있어야한다.컨트롤러마다 로그인 체크 로직을 작성하면 되지만 유지보수에서 큰 문제가 생길 수 있다이때 스프링 필터, 인터셉터를 사용한다Servle