영속 계층의 처리 테이블을 반영하는 VO(Value Object) 클래스의 생성 MyBatis의 Mapper 인터페이스의 작성 / XML 처리 작성한 Mapper 인터페이스의 테스트 영속 계층의 구현 준비 VO 클래스의 작성 VO 클래스를 생성하는 작업은 테이블 설계를 기준으로 작성하면 됩니다. 현재 tbl_board 테이블의 구성은 아래와 같습니다. 프로젝트에 org.noel.domain 패키지를 생성하고, BoardVO 클래스를 정의합니다. ▶ BoardVO 클래스 package org.noel.domain; import java.util.Date; import lombok.Data; @Data public class BoardVO { private Long bno; private String tit..
Back-end/Spring Web Project
테이블생성과 Dummy(더미) 데이터 생성 SQL Developer를 이용해서 PART 1에서 작성한 book_ex 계정을 통해서 테이블을 생성합니다. 게시물은 각 게시물마다 고유의 번호가 필요합니다. 오라클의 경우 시퀀스(sequence)를 이용해서 이러한 작업을 처리합니다. 시퀀스를 생성할 때는 데이터베이스의 다른 오브젝트들과 구분하기 위해서 'seq_'와 같이 시작하는 것이 일반적입니다. 테이블을 생성할 때는 'tbl_'로 시작하거나 't_'와 같이 구분이 가능한 단어를 앞에 붙여주는 것이 좋습니다. tbl_board 테이블은 고유의 번호를 가지기 위해서 bno 칼럼을 지정했고, 제목(title), 내용(content), 작성자(writer)를 칼럼으로 지정합니다. 테이블을 설계할 때는 가능하면 레..
프로젝트의 생성 및 준비 Spring Leagacy Project의 생성 pom.xml에서 스프링 버전 변경 spring-test, spring-jdbc, spring-tx 추가 junit 버전 변경 Servlet 버전 변경 HikariCP, MyBatis, mybatis-spring, Log4jdbc 추가 JDBC 드라이버 프로젝트 내 추가 기타 Lombok의 설정 예제 프로젝트 구성 예제를 위한 프로젝트는 'ex02' 이름으로 생성하고, 'Spring Legacy Project'로 생성합니다. 프로젝트를 생성한 후에는 pom.xml의 수정, 데이터베이스 관련 처리, 스프링 MVC 처리와 같은 순서로 진행합니다. pom.xml의 수정 프로젝트를 생성한 후 pom.xml에서는 스프링의 버전과 Java 버..
Controller의 Exception 처리 Controller를 작성할 때 예외 상황을 고려하면 처리해야 하는 작업이 엄청나게 늘어날 수 밖에 없습니다. 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있습니다. @ExceptionHandler와 @ControllerAdvice를 이용한 처리 @ResponseEntity를 이용하는 예외 메시지 구성 @ControllerAdvice @ControllerAdvice 는 AOP(Aspect-Oriented-Programming)를 이용하는 방식이다. AOP는 핵심적인 로직은 아니지만 프로그램에서 필요한 '공통적인 관심사(cross-concern)는 분리'하자는 개념이다. Controller를 작성할 때는 메서드의 모든 예외상항을 전부 핸들링..
파일 업로드 처리 Servlet 3.0 이후(Tomcat7.0)에는 기본적으로 업로드 되는 파일을 처리할 수 있는 기능이 추가가 되었고 별도로 commons-fileupload 라이브러리 등을 사용합니다. MVN REPOSITORY에서 Apache Commons FileUpload 라이브러리 코드를 pom.xml에 추가한다. https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload/1.4 pom.xml에 코드에 commons-fileupload 라이브러리를 추가하면 Maven Dependencies에 commons 관련 jar 파일 2개가 추가되는 것을 확인할 수 있다. 라이브러리를추가한 후 파일이 임시로 업로드될 폴더를 C 드라이..
Controller의 리턴 타입 스프링 MVC의 구조가 기존의 상속과 인터페이스에서 어노테이션을 사용하는 방식으로 변한 이후에 가장 큰 변화 중 하나는 리턴 타입이 자유로워 졌다는 점입니다. String : jsp를 이용하는 경우에는 jsp 파일의 경로와 파일이름을 나타내기 위해서 사용 void : 호출하는 URL과 동일한 이름의 jsp를 의미 VO, DTO 타입 : 주로 JSON 타입의 데이터를 만들어서 반환하는 용도로 사용(추가적인 라이브러리 필요) ResponseEntity 타입 : response할 때 Http 헤더 정보와 내용을 가공하는 용도로 사용(추가적인 라이브러리 필요) Model, ModelAndView : Model로 데이터를 반환하거나 화면까지 같이 지정하는 경우에 사용(최근에는 사용..
스프링 MVC의 Controller 특징 HttpServletRequest, HttpServletResponse를거의 사용할 필요 없이 필요한 기능 구현 다양한 타입의 파라미터 처리, 다양한타입의 리턴타입 사용 가능 GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능 상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능 @Controller, @RequestMapping 프로젝트 내 org.noel.controller 패키지 폴더에 SampleController라는이름의 클래스를 작성한다. ▶ SampleController 클래스 package org.noel.controller; import org.springframework.stereotype.Controll..
스프링 MVC는 스프링의 서브(sub) 프로젝트 입니다. https://spring.io/projects 를 보면 Spring Framework라는 메인 프로젝트 외에도 여러 종류의 서브 프로젝트가 존재하는데, 스프링 MVC 역시 이러한 프로젝트 중 일부입니다. 스프링은 하나의 기능을 위해서만 만들어진 프레임워크가 아니라 '코어'라고 할 수 있는 프레임워크에 여러 서브 프로젝트를 결합해서 다양한 상황에 대처할 수 있도록 개발되었습니다. 서브 프로젝트라는 의미를 개발자의 입장에서 가장 쉽게 이해할 수 있는 방법은 '별도의 설정이존재할 수 있다'라는 개념입니다. Spring Legacy Project로 생성한 예제의 경우에도 servlet-context.xml과 root-context.xml로 설정 파일이 ..