[Spring MVC] [1] 웹 페이지 만들기 복습

윤경·2021년 9월 14일
0

Spring MVC

목록 보기
13/26


프로젝트 생성

프로젝트를 생성하고 해줘야 할 두 가지

  1. Annotation Processors 검색해서 Enable annotation processing 체크 박스 체크해주기 → Lombok 정상 동작
  2. gradle 검색해서 Build and run using, Run tests using 을 보두 IntelliJ IDEA로 설정해주기 → 빠른 동작

서비스 제공 흐름

클라이언트가 요청을 하면 상품 목록 컨트롤러가 상품 목록 뷰를 호출해 상품 등록 폼이나 상품 상세 컨트롤러에 접근

등록일 땐 상품 등록 폼이 상품 저장 컨트롤러를 불러 상품 상세 뷰를 내부 호출
(상품 상세 뷰는 상품 상세 컨트롤러와 나뉘지 않음. 하나임.)

상품 수정 폼 컨트롤러를 불러 상품 수정 폼 뷰를 통해 상품 수정 컨트롤러로 수정을 하고 나면 리다이렉트로 상품 상세 컨트롤러가 호출됨

📌 annotation

  • @Data: getter, setter 이외에도 command+n으로 생성 가능한 모든것을 생성해 주기 때문에 위험 !! (@Getter, @Setter처럼 분리해 쓰는 것을 추천)

  • @AfterEach: 하나 실행될 때마다 호출되어 데이터를 원하는 액션을 실행시킬 수 있음(?)
    (나는 이 프로젝트에서 clear를 시켜줬음)

  • @RequiredArgsContructor: final이 붙은 멤버 변수만 사용해 생성자를 자동 생성

  • @Autowired: 생성자가 딱 하나일 때 생략 가능한 의존관계 주입 annoation

  • @PostConstruct: 해당 빈 의존관계가 모두 주입되고 나면 초기화 용도로 호출

📌 단축키

command+shift+t: test 파일 생성

📌 thymeleaf

속성 변경 - th:href

뷰 템플릿을 거치면 th:href 값이 href로 대체되며 동적으로 변경 가능해짐.

URL 링크 표현식 - @{ }

url링크를 사용하는 경우 사용.
서블릿 컨텍스트를 자동으로 포함함.

속성 변경 - th:onclick

리터럴 대체 문법을 사용 (| |)

리터럴 대체 - | |

타임리프에서는 문자와 표현식은 분리되어 있어 +를 사용해야 함.
하지만 리터럴 대체 문법을 사용하면 더하기를 하지 않아도 사용 가능해짐.

반복 출력 - th:each

반복을 위해 사용.
모델에 포함된 컬렉션 데이터가 변수마다 하나씩 포함되고 반복문 안에서 그 변수를 사용할 수 있음.

변수 표현식 - ${ }

모델에 포함된 값이나, 타임리프 변수로 선언된 값 조회 가능

내용 변경 - th:text

내용의 값 th:text 값으로 변경

URL 링크 표현식2 - @{ }

경로를 템플릿처럼 편리하게 사용 가능
경로 변수뿐만 아니라 쿼리 파라미터도 생성

참고

항상 import는 java.util.'''로 해주기

테스트 케이스를 작성할 땐 given / when / then을 따라서 작성하자

bootstrap이 안된다? → out이라는 파일을 지우고 다시 서버를 재시작해서 해보기

profile
개발 바보 이사 중

0개의 댓글