✔️스프링부트 시작하기
부트를 설치하면 부트에서 제공해주는 내장서버를 사용할수 있다

위의 사진은 부트 대시버튼인데 이걸 누르면 콘솔 옆에 부트 대시보드가 생긴다

프로젝트 우클릭 눌러서 실행시키기

실행시키면 콘솔에 에러문구를 볼수 있다

이문제는 부트에서 사용할 톰캣을 설정해주지 않아서 생긴 에러다 에러문구를 보면 현재 8080포트가 이미 사용중이라 8080을 사용할수 없어서 발생한 에러다
현재 8080은 오라클이 사용하고 있기때문에 포트를 변경해줘야하는데 부트는 내장서버를 사용하기때문에 변경이 불가능하다
따라서 이문제를 해결하기 위해

바꿔줘야하는데 application.properties에서 사용할 서버를 지정해줄수 있다

이렇게 설정하고 다시 부트 대시보드를 눌러 실행시키면

이렇게 에러 없는 콘솔을 만날수 있다 즉 변경한 서버가 동작에 성공했다는 뜻이다
내장서버로 사용할수 있는 이유는 @SpringBootApplication가 스프링 부트 앱으로 동작하기 위해 필요한 설정들을 한 번에 묶어둔 어노테이션 설정이기 때문이다

✔️페이지 시작하기
인터넷 창을 하나 띄워서 주소창에 localhost:8088/index를 입력하면 이렇게 whitelabel 에러페이지가 뜨게 된다

이에러페이지가 뜨는 이유는 현재 인덱스페이지가 웹인프의 하위에 있는데 이걸 작동시킬 뷰 리졸버를 설정하지 않았기 때문이다

application.properties에서 뷰리졸버를 설정할수 있다 이렇게 설정을 하고 다시 실행시키면 그래도 에러페이지가 나오는데 뷰리졸버의 프리픽스 서픽스는 컨트롤러가 반환하는 뷰 이름에 붙는 설정으로 이것을 해줘야하는 것은 맞으나 현재 에러가 발생하는 근본적인 원인은 아니다
근본적인 원인은 사용자 요청과 뷰리졸버 사이를 연결해줄 컨트롤러가 현재 없기 때문이다
즉 부트 내장 웹서버사용으로 톰캣이 없어도 잘 돌아는 가지만 내장된 프론트컨트롤러가 없기때문에 반환해줄 뷰 이름이 없다는 뜻이다
여기가 굉장히 중요한 포인트로 컨트롤러를 동작시킬려면 @컴포넌트를 상속 받은 @컨트롤러가 있어야한다
컨트롤러파일의 위치는 데모 어플리케이션과같은 위치에 만들어 주어야한다

컨트롤러는 기존의 액션과 같으며 사용자의 요청 정보를 받아서 어디로 갈지 반환한다
즉 액션=두액션 익스큐트 =핸들리퀘스트 = 테스트가 다 같은 컨트롤러 역할을 한다고 보면 된다
import org.springframework.stereotype.Controller;
@Controller
public class Testcontroller {
@Component에는 이 컴포넌트를 상속 받은 세가지 어노테이션이 있는데 @Controller은Action과 같고 @Service는 DAO를 부하로 가지고 있는애를 의미하며 @Repository는 DAO를 의미한다
이제 컨트롤러에 인덱스라고 요청해야하는데 현재 요청할 컨트롤러 매핑이 존재하지 않는다 웹동작 순서에 따라 요청한 컨트롤러에 인덱스를 매핑시켜줘야한다 이때 @GetMapping이라는 어노테이션을 사용하는데 이 어노테이션은 핸들러 매핑과 같은 역할을 한다
@GetMapping("/index")
public String test() {
System.out.println("로그");
return "index";// /WEB-INF/views/ + index + .jsp
}
이렇게 설정하면 부트의 내장서버를 사용하여 포트를 설정하고 디스패쳐서블릿까지 모두 이 컨트롤러가 가지게 된다
✔️부트에서 .jsp페이지 디폴트로 설정하기
부트에서는 jsp를 기본으로 두고 있지 않는데 따라서 jsp를 사용하기 위해서 pom.xml에 자원을 추가해줘야한다
폼.xml에 <dependency>에 두가지 jar를 추가해야한다
여기서 톰캣서버의 역할은 JSP 파일을 HTML로 변환(컴파일) 해주는 엔진이다 이게 없으면 .jsp를 읽지 못하고 404 / Whitelabel Error가 발생한다 또한 jsp에서 JSTL 태그 사용을 위해 추가가 필요하고 API + 구현체 둘 다 있어야 정상 동작한다.
<!-- JSP 컴파일 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- JSTL -->
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
</dependency>
따라서 요청이 간략화되고 .jsp에 로그인.do가 아니고 로그인으로 작성할수 있다 즉 요청이 레스트풀 하게 되어서 좋다
이렇게 만들면 테스트컨트롤러에서 하나로 여러개의 기능을 처리할수 있게되어 컨트롤러를 멤버, 보드 이런식으로 연관된것끼리 마만들수 있다
'🐢 꼬부기 LV.1 | 개념•기초 > 💧물대포(핵심개념)' 카테고리의 다른 글
| AOP 용어 정리 (0) | 2026.01.23 |
|---|---|
| 스프링부트에서 데이터 주고 받기 (0) | 2026.01.19 |
| 실제 스프링의 이해 (0) | 2026.01.17 |
| 스프링의 구조를 이해해 보기 (0) | 2026.01.16 |
| 인텔리제이 특징과 프로젝트 생성하기 (0) | 2026.01.15 |