목록백엔드 (25)
ENN
타임리프 특징 서버 사이드 HTML 렌더링(SSR) : 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용됨 네츄럴 템플릿 : 순수 HTML을 최대한 유지하는 특징이 있음. 따라서 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있음 스프링 통합 지원 : 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 수 있도록 지원 타임리프 기본 기능 타임리프 사용 선언 기본 표현식 타임리프는 다음과 같은 기본 표현식들을 제공 간단한 표현 변수 표현식: ${...} 선택 변수 표현식: *{...} 메시지 표현식: #{...} 링크 URL 표현식: @{...} 조각 표현식: ~{...} 리터럴 텍스트: 'one ..
1. SELECT 가장 기본인 데이터를 불러오는 쿼리문 SELECT FROM -- 지정한 테이블에서 해당하는 컬럼의 데이터를 불러옴 SELECT FROM WHERE -- 조건에 맞는 데이터만 불러옴 SELECT FROM WHERE ORDER BY ASC or DESC -- 조건에 맞는 데이터를 ORDER BY절 뒤에 있는 컬럼을 기준으로 정렬, 기본값은 오름차순 SELECT FROM WHERE ORDER BY ASC or DESC LIMIT -- LIMIT절의 개수만큼 데이터를 불러옴 2. INSERT 데이터를 삽입하는 쿼리문 INSERT INTO VALUES (V1, V2, V3) -- 테이블의 모든 컬럼에 값을 입력함, 따라서 컬럼 수와 값의 개수가 동일해야함 INSERT INTO (C1, C2) V..
1. 의존성 설정 build.gradle 파일에 위의 의존성을 작성 spring boot 프로젝트 생성 시 dependency에 mybatis framework를 추가했다면 따로 의존성을 추가할 필요 없음 위의 방법이 아닌 경우 dependencies {…}에 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0 를 추가하고 Refresh Gradle Project를 해줌 2. DB 연결 설정 및 mybatis 설정 application.priperties 파일을 열고 아래와 같이 설정 정보를 작성 # MyBatis spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver s..

1. Mysql과 연결된 Spring Boot Application 생성 기존 개발에 사용하던 프로젝트를 이용함 2. docker-compose.yml 작성 프로젝트 최상단에 Dockerfile, docker-comppose.yml 파일 생성 2-1. Dockerfile 작성 FROM : 베이스 이미지 지정 ARG : 인자를 정의, ./build 이후 값은 추후 jar 파일을 복사할 때 사용 COPY : 위에서 정의한 .jar 파일을 app.jar파일로 복사 ENTRYPOINT : .jar 파일을 수행하기 위한 명령어 2-2. docker-compose.yml 파일 작성 3. 소스 빌드 및 실행 프로젝트 최상단에서 빌드 실행 //docker-compose.yml 파일 실행 $ docker-compose ..
둘 다 controller에서 view를 사용하지 않고 정보를 json등의 형태로 return해주기 위해 쓰인다는 것이 공통점이다. 그렇다면 둘은 어떻게 다르며, 각각의 장단점은 무엇일까? 1. ResponseEntity ResponseEntity란? ResponseEntity는 HttpEntity를 상속받는다. 이때 HttpEntity는 HTTP 메세지의 헤더, 바디 정보를 담고 있다. 따라서 ResponseEntity를 사용하면 응답시에 HTTP 상태 코드를 설정할 수 있다. 다음과 같이 쓰일 수 있다. public ResponseEntity(HttpStatus status) { this(null, null, status); } public ResponseEntity(@Nullable T body, ..
Optional 클래스는 Java8부터 지원하는 클래스이다. 그 개념과 사용법을 알아보자. Optional의 개념 java로 코드를 작성하다보면 가장 빈번히 마주치는 에러가 NullPointerException(NPE)이다. 그러다보니 항상 null값에 대한 처리를 고민해하는데 그 고민을 덜어주는 것이 Optional이다! Optional 클래스는 null값이 될 수도 있는 객체를 감싸고 있는 Wrapper 클래스이다. Optional를 사용하면 NullPointerException을 피하기 위해 null 체크를 하지 않아도 된다. Optional 사용법 Optional 객체는 다음과 같은 방법들로 생성한다. 1. 빈 Optional 객체 생성 Optional optional = Optional.empt..
HandlerExceptionResolver의 개념 HandlerExceptionResolver는 Controller의 작업 중 발생한 예외를 처리하는 객체이다. 예외가 발생하면 DispatcherServlet이 먼저 전달 받고, 다시 Servlet 밖의 Servlet Container가 처리하는데 이때 HandlerExceptionResolver의 등록 여부에 따라 이후 흐름이 아래처럼 달라진다. HandlerExceptionResolver 등록 X -> HTTP Status 500 HandlerExceptionResolver 등록 O -> DispatcherServlet에서 HandlerExceptionResolver가 에러 처리가 가능한지 확인하고, 가능하면 HandlerExceptionResolv..
HTTP API와 REST API HTTP API는 HTTP를 통신방식으로 사용하는 API를 일컫는다. REST API는 HTTP API보다 좁은 개념으로 사용되며, REST를 지키면서 사용되어야 하는 API를 일컫는다. 이때 REST는 Representational State Transfer의 약자로 다음 4가지 조건을 만족해야 한다. 자원의 식별 메시지를 통한 리소스 조작 자기서술적 메시지 애플리케이션의 상태에 대한 엔진으로서의 하이퍼미디어 HTTP 메서드 CRUD에 각각 대응되는 HTTP 메소드는 다음과 같다. CRUD HTTP method Create POST Read GET Update PUT / PATCH Delete Delete 여기서 궁금증이 생길 것이다. 업데이트를 할 때 사용할 수 있는..