✅ 웹 - 서버 이해1\. 클라이언트(사용자) 서버에 요청2\. 서버에서 다시 클라이언트에게 응답웹 서버Web ServerHTTP 기반으로 동작정적 리소스 제공정적파일, HTML, CSS, JS, 이미지, 영상 등EX) APACHE (아파치)웹 애플리케이션 서버Web
@ServletComponentScan -> 내 패키지를 포함해서 하위 패키지의 서블릿을 다 찾아서 자동으로 서블릿 등록 후 실행할 수 있게 해줌 @WebServlet : 서블릿 어노테이션 name : 서블릿 이름 urlPatterns : URL 매핑 💡 name,
✅ 순수 서블릿 개발 -> 뷰 화면(HTML)을 서블릿(자바 클래스) 안에서 개발하다 보니, HTML을 만드는 작업이 자바 코드에 섞여서 지저분하고 복잡하다는 단점이 생겨서 템플릿 엔진 중 하나인 JSP 가 생김 ✅ JSP JSP를 사용하면서 따로 JSP파일을 만드
✅ 프론트 컨트롤러 패턴 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 1개로 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 EX) 스프링 웹 MVC의 프론트
✅ JAR , WAR 차이 JAR -> 내장 서버 사용에 최적화 되어 있는 기능 WAR -> 내장 서버도 가능하지만, 주로 외부 서버에 배포하는 목적으로 사용 JAR (Java Archive) JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일 Cl
v1 HttpServlet 객체를 이용해서 데이터를 받음v2@RequestParam 어노테이션을 통해서 데이터 받음v3HTTP 파라미터 이름이 변수명이 동일하면 어노테이션 안의 값 생략 가능v4HTTP 파라미터 이름이 변수명이 동일하면 어노테이션 자체를 생략 가능r
✅ red
✅ 정적 리소스src/main/resources -> 리소스를 보관하는 곳, 클래스 패스의 시작 경로다음 디렉토리에 리소스를 넣어두면 스프링부트가 정적 리소스로 서비스를 제공스프링부트의 정적 리소스 경로 -> src/main/resources/static다음 경로로
✅ 스프링부트(주요) 기본 메시지 컨버터0 = ByteArrayHttpMessageConverter1 = StringHttpMessageConverter2 = MappingJackson2HttpMessageConverter클래스 타입과, 미디어 타입을 체크해서 사용여부
✅ 문제점다음과 같은 코드는 위 그림과 같이 새로고침 하면 중복 등록하는 문제점이 발생한다웹 브라우저 입장에서는 마지막 요청한 것이 POST/add 한것이 마지막 동작이므로\-> 새로고침을 하면 마지막으로 동작 했던 POST/add가 다시 동작하는 문제점이 발생한다 (
✅ RedirectAttributesRedirectAttributes 를 사용하면 URL 인코딩 + 쿼리 파라미터까지 처리해줌pathVariable 바인딩 : {itemId}나머지는 쿼리 파라미터로 처리 : ?status=true✅ 뷰 템플릿 메시지 추가${param.
✅ 타임리프 사용 선언 ✅ URL 링크 표현식 - @{...} URL 링크를 사용할 경우 위와 같은 표현을 적어야함 ✅ 속성 변경 - th:href ✅ 반복출력 - th:each HTML을 그대로 볼때는 href 속성이 사용되고, 뷰 템플릿을 거치면 th:href의