59일차(1)/Spring Boot(5) : Boot에서 jsp 사용하기
Starter Project로 생성
- 프로젝트 기본 구성 설정
- 필요한 의존 Dependency를 설정하는 창이 나옴
- Maven의 특징 pom.xml
- 생성시에 한 기본세팅과 dependency가 들어가있다.
- 메인메소드가 있는 java 파일. 여기서 spring Framework가 시작된다.
- Legacy Project 에서는 tomcat을 start해서 서비스하는데,
boot에서는 tomcat 서버가 내장되어있다. 따로 서버를 잡을 필요가 없다.
- 메인메소드만 실행해주면 알아서 서버가 시작된다.
- Run 하면 내부적으로 Tomcat 서버가 시작되고, 이 프로젝트를 서비스하게 된다.
- application.properties에서 포트번호, context경로를 설정할 수 있다.
- 시작된 프로세스를 우측 상단 디버깅 창으로 들어가서도 볼 수 있다.
- 현재 활성화되어 있는 프로젝트를 모두 볼 수 있다.
- 여기서 시작되어있는 프로세스를 찾아서 중단할 수도 있다.
Boot04_MyBatis 프로젝트
- pom.xml에 jdbc, web, mybatis, devtools, oracle 이렇게 준비되어 있어야 한다.
- 하지만 이건 라이브러리만 준비된 것이고, DB 연동을 위한 세팅은 직접 해야한다.
- run해서 /member/list 경로를 요청하면 member 테이블에 있는 내용이 출력된다.
- 위와 같이 나오려면 application.properties에 커넥션 풀 설정(dataSource) 이 있어야 한다.
- DataSource를 어디서 어떤 계정으로 어떻게 얻어올 것인지 명시해준다.
- 이것을 hikari 데이터소스라고 부른다. 커넥션 풀을 해주는 소스이다.
- mapper의 위치도 이곳에 명시해주면 된다. 기존 Configuration의 역할!
- src의 resources가 classpath 위치로 잡힌다.
- classpath: 란? java 클래스입장에서는 초록색 화살표 위치 / 일반 자원입장에서는 분홍색 화살표 위치라고 보면 된다.
- mapper를 어떤 패키지안에 넣을 수도 있다.
- com.sy.boot04.mybatis 패키지 생성
- others로 생성-TestMapper
- 원하면 여기에 만들 수도 있다.
- classpath: 의 위치는 이렇게 둘 중 하나이다.
src/main/java/ or src/main/resources/
- classpath: com/sy/boot04/mybatis/TestMapper.xml 라고 쓸 수도 있고
classpath: mapper/MemberMapper.xml 이라고 쓸 수 도있다.
- 하지만 굳이? 2번이 편리하고 훨씬 낫다. 굳이 java 클래스가 들어가는 패키지안에 넣을 필요는 없다.
- 이렇게 mapper의 위치, dataSource 위치만 가르쳐 놓으면 된다.
- 그러면 sqlSessionTemplate Bean이 만들어진다.
- dao에서 sqlSessionTemplate 에서 만들어진 객체를 주입받아서 사용한다.
- Spring 에서는 servlet-context.xml에서 만들어서 사용했다.
- 필요한 DB 데이터를 어디서 얻어오는지(ref) 등등을 이 객체에서 명시해두었다.
- Spring Boot에서는 이런 내용들이 다 생략되어 있다.(숨어있다)
- DataSource, Mapper 위치만 알려주면 된다.
Controller
- Spring 5점대 버전에서는 @GetMapping이 있다.
- dao로 읽어온 결과를 json으로 출력하겠다는 뜻! RestController의 특징이다.
- List<MemberDto>에 담겨있어서 JSON문자열이 되어 출력되었다.
- 일반 @Controller 는 이렇게 응답하지 않는다. RestController이기 때문에 가능한 것!
Boot05_jsp 프로젝트 생성
- Spring Boot는 jsp 친화적이지는 않다. 장기적으로는 안쓰게 될 수도 있다.
- Spring Tool Suite 3를 지금 쓰고 있는데,
STS 4에서 보면 new jsp가 아예 없다. 따로 설치해야 한다.
- Boot에서는 jsp 대신에 이것을 사용한다.
- 지금은 jsp를 사용하는 세팅이므로 이렇게 두개만!!(DB연동 x)
pom.xml에 추가
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
- jsp, taglib를 사용하기 위한 라이브러리 추가해주기!
- 하단 src-main에는 이제 webapp폴더가 없다. 직접 만들어주기!
- WEB-INF, views도 만들어주어야 한다.
- others- Web- jsp file 만들기
application.properties 에서 아래와 같이 설정
- 접두어, 접미어로 저 내용을 붙이겠다는 뜻!
- servlet-context.xml에서 하던 내용이다.
HomeController 생성
package com.sy.boot05;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
/*
* [ jsp 페이지를 사용하기 위한 설정 ]
*
* 1. pom.xml 에 tomcat-embeded-jasper 와 jstl dependency 를 추가한다.
* 2. /webapp/WEB-INF/views/ 구조로 폴더를 src/main 하위에 만든다.
* 3. view page의 prefix와 suffix 설정을 추가한다.
* 만일 application.properties 에 설정을 할거라면
*
* spring.mvc.view.prefix=/WEB-INF/views/
* spring.mvc.view.suffix=.jsp
*
* 이 내용을 추가한다.(추후에 설정을 다른 곳에서 해야 함)
*/
@Controller
public class HomeController {
@GetMapping("/")
public String home(HttpServletRequest request) {
List<String> noticeList=new ArrayList<>();
noticeList.add("Spring Boot 시작입니다.");
noticeList.add("어쩌구...");
noticeList.add("저쩌구...");
request.setAttribute("noticeList", noticeList);
return "home";
}
}
- GET 방식, context의 최상위 요청에 대해서 이렇게 응답해주겠다는 것을 명시
- Run Spring Boot App 했을때 이미 9000번 포트가 사용되고 있다고 나올 수 있다.
- 그렇다면 현재 다른 프로젝트에서 사용되고 있기 때문!(서버가 돌아가고 있다)
- 디버그모드로 들어가서 해당 프로젝트를 terminate 시키면 된다.
- view page에 전해줄 내용이 있다면 HttpServletRequest 객체에 담아서 전달해주면 된다.
- 화면에 나오는 jsp는 똑같다.
- 내장 tomcat를 사용하기 위해 메인메소드에서 시작된다는 차이점은 있다.
[ jsp 페이지를 사용하기 위한 설정 ]
1. pom.xml 에 tomcat-embeded-jasper 와 jstl dependency 를 추가한다.
2. /webapp/WEB-INF/views/ 구조로 폴더를 src/main 하위에 만든다.
3. view page의 prefix와 suffix 설정을 추가한다.
만일 application.properties 에 설정을 할거라면
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
이 내용을 추가한다.(추후에 설정을 다른 곳에서 해야 함)
'국비교육(22-23)' 카테고리의 다른 글
59일차(3)/Spring Boot(7) : war 파일 실행 / Boot에서 war파일 생성(1) (0) | 2022.12.30 |
---|---|
59일차(2)/Spring Boot(6) : WebConfig 설정, yml 파일 작성하기 (0) | 2022.12.30 |
58일차(3)/Spring Boot(4) : Boot 에서 DB연동, MyBatis 사용 (0) | 2022.12.29 |
58일차(2)/Spring Boot(3) : Spring web project 세팅 / Spring Boot 설정 작성법 (0) | 2022.12.29 |
58일차(1)/Spring(22) : 갤러리 게시판 구현 (1) | 2022.12.29 |