🌱 Spring/Web MVC

본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 📢 본 포스팅에 앞서 예제를 위한 프로젝트를 생성하자. 더보기 📌 프로젝트 생성 Project: Gradle Project Language: Java Spring Boot: 2.7.0 (정식버전 중 가장 최신 버전 선택) Project Metadata Group: hello Artifact: typeconverter Name: typeconverter Package name: hello.typeconverter Packaging: Jar Java: 11 Dependencies : Spring Web, Thymeleaf, Lombok 📌 프로젝트 실행 인텔리제이로 프로젝트를 Open하고, 동작하는지 확인한다. 기본 메인..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 웹 페이지가 아닌 API 예외는 어떻게 처리하는지 알아보자. API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려줘야하므로, 생각할 내용이 더 많다. API 예외처리 (기존 방법) 서블릿 우선 서블릿 오류 페이지 방식으로 예외처리를 해보자. 👉🏻 서블릿 오류페이지 등록 📂 WebServerCustomizer @Component public class WebServerCustomizer implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableWebServerFactory factory) { Err..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 📢 본 포스팅에 앞서 예제를 위한 프로젝트를 생성하자. 더보기 📌 프로젝트 생성 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.6.x (정식버전 중 가장 최신 버전 선택) Project Metadata Group: hello Artifact: exception Name: exception Package name: hello.exception Packaging: Jar Java: 11 Dependencies : Spring Web, Thymeleaf, Lombok, Validation 📌 프로젝트 실행 인텔리제이로 프로젝트를 Open하고, 동작하는지 확인 ..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 이전 포스팅에서 세션을 사용한 로그인 처리를 알아보았다. 하지만, 로그인을 하지 않은 사용자도 URL(http://localhost:8080/itmes)을 직접 호출할 경우 상품 관리 화면에 들어갈 수 있다는 문제가 있다. 이를 해결하기 위해서는 상품 관리 컨트롤러에서 로그인 여부를 체크하는 로직을 하나하나 작성해줄 수 있지만, 향후 로그인과 관련된 로직이 변경될 때마다 작성한 모든 로직을 수정해야 한다는 번거로움이 있다. 어플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사(cross-cutting concern)라고 한다. 여기서는 등록, 수정 삭제, 조회 등등 여러 로직에서 공통으로 로그인 인증에 대..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 프로젝트 준비 로그인 요구사항 홈 화면 - 로그인 전 회원 가입 로그인 홈 화면 - 로그인 후 본인 이름 ( __님 환영합니다. ) 상품 관리 로그아웃 보안 요구사항 로그인 한 사용자만 상품에 접근하고, 관리할 수 있음 로그인 하지 않은 사용자가 상품 관리에 접근하면 로그인 화면으로 이동 회원 가입, 상품관리 패키지 구조 설계 hello.login domain item member login web item member login 구조 설계시 도메인이 가장 중요하다. 도메인은 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말한다. 이때 web은 domain을 의존하지만 domain은 web을 의존하지 않도록 의존관..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 검증 기능을 매번 코드로 작성하는 것은 번거로운 일이다. 더욱 편리하게 검증을 하기 위해 검증 로직을 모든 프로젝트에 적용할 수 있도록 공통화 하고, 표준화 한 것이 Bean Validation이다. Bean Validation을 사용하면 검증에 대한 제약조건을 어노테이션에 넣어 사용할 수 있다. Bean Validation Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 쉽게 말해 검증 어노테이션과 여러 인터페이스의 모음이다. Bean Validation을 구현한 기술 중 일반적으로 사용하는 구현체는 하이버네이트 Validator이다. ❗참고(하이버 네이트 Validator 관련 링크) - ..
Validation 클라이언트 검증 vs 서버 검증 컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 검증은 클라이언트 측에서 진행할 수도 있고 서버 측에서 진행할 수도 있으며, 특징은 다음과 같다. 클라이언트 검증은 조작할 수 있기 때문에 보안에 취약하다 서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다. 따라서 둘을 적절히 섞어서 사용하되, 최종적으로 서버 검증은 필수이다. API 방식을 사용할 경우 API 스펙을 잘 정의하여 검즈 오류를 API 응답 결과에 잘 남겨줘야 한다. 예제 만들기 검증을 직접 구현해보며 검증에 대해 알아보도록 하자. 검증 요구사항 타입 검증 가격, 수량에 문자가 들어가면 검증 오류 처리 필드 검증 상품명 : 필수, 공백x 가격 : 1000원 ..
본 포스팅은 인프런 - 스프링 MVC 2편을 강의를 바탕으로 공부하고 정리한 글입니다. 타임리프는 스프링 부트에서 공식적으로 지원하는 뷰(View) 템플릿이다. JSP와 달리 Thymeleaf 문서는 html 확장자를 갖고 있어 JSP처럼 Servlet이 문서를 표현하는 방식이 아니기 때문에 서버 없이도 동작이 가능하다. 이번 포스팅에서는 타임리프 뷰 템플릿 사용법에 대해 간단히 알아볼 예정이다. 스프링 부트 설정 👉🏻 타임리프 라이브러리 추가 📂 build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' } 스프링 부트가 자동으로 ThymeleafViewResolver와 필요한 스프링..
an2z
'🌱 Spring/Web MVC' 카테고리의 글 목록