Mapper XML 설정
1. xml 경로 설정
2. xml 파일 안의 내용
Mapper를 사용하는 이유로는 sql문을 좀 더 자유롭게 사용하기 위해서 인데 이에 대해서는 공부를 따로 할 필요가 있어보인다
3. Properties 생성
4. root-context 변경
(1) driverClassName 변경
(2) jdbcURL도 변경
MVC Model2 패턴 사용이유
유지보수가 좋다, 비용적인 면에서 이득이 많아서
서블릿
(1) 클래스에서 URL 분기
(2) GET/POST는 메서드 선택과 override
(3) 고정된 파라미터 리턴 타입
(4) 수동으로 직접 forward
(5) 의존성 주입 불가
(6) JSON 등의 처리의 불편함
스프링 Controller
(1) 클래스 혹은 메서드에서 가능
(2) @GetMaping / @PostMapping 사용 가능
(3) 고정 된 파라미터와 리턴 타입
(4) 자동으로 포워드 처리
(5) 스프링을 통해서 다른 객체 주입
(6) @RestController
(7) 기타 어노테이션을 통한 많은 기능 지원, 다양한 뷰 처리 기능
(1) 새로운 프로젝트 생성
(2) jdk, spring 버전 바꾸기
(3) 해당 코드 추가 (pom.xml)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
(4) pom.xml servlet 버전 변경
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
(5) 잘 구동되는지 Run on server로 확인하기 (Hello world 가 뜨면 괜찮은것이다)
(6) Server - Modules 의 path을 /로 변경
Controller : URL 처리
Model : DB에서 가져온 데이터
View : 웹 화면
ViewResolver : 간단하게 이야기하자면 컨트롤러의 반환된 String 문자열이 /WEB-INF/views/ ○○○.jsp 라고하는 ○○○에 들어가게 된다는 것이다
즉, 서버를 실행하면 기본적으로 ○○○.jsp 라는 파일을 찾아서 실행시키게 된다는 것이다
Model 에 대한 설명
해당 컨트롤러에서 파라미터를 추가하고 싶은 경우
위의 방식 대로 컨트롤러의 파라미터에 Model 객체와 변수를 넣어주면 된다
그리고
model.addAttribute("변수명", 들어갈 데이터);
를 넣어주는 코드를 작성함 으로써 파라미터를 전달한다
해당 컨트롤러의 경우 serverTime이라는 변수에 formattedDate라는 데이터를 넣어서
home에 반환하게 된다.
이 home에 반환 한다는 의미는
컨트롤러에 의해 ViewResolver를 통해서
home.jsp라는 파일을 찾게 될 것이다
그리고 난 뒤 home.jsp를 보면
위와 같이 TL로 파라미터를 가져오게 되고 Spring MVC를 통해서 ${serverTime} 에는 formattedDate라는 데이터가 들어가 있다
서버를 실행시키면
보다시피 server is ${serverTime} 이라는 문자열이 출력되는 것이 아닌
해당 데이터가 출력되는 것을 확인할 수 있다