좁고 얕은 블로그
Spring - Front Controller 본문
Front Controller
서블릿을 하나만 만들고, 실제 일은 POJO에게 시키는 형태
안내데스크(프론트) 처럼 front controller에게 요청을 구분하고 view를 선택하게 맡김
==> 실제로 일하는 친구 : 알바생(POJO)
알바생 : 일반Class(POJO)를 만들어서 기능 하나 부여함으로써 Controller처럼 쓰게 해준다.
(클래스는 텅 비어있기 때문에 굉장히 메모리가 작기 때문)
POJO : Plain Old Java Object (그냥 자바 객체..)

스프링프레임워크는 이러한 front controller를 기초로 한다.
Spring에서는 FrontController를 기본으로 제공한다!! 굿굿
web.xml 들어가보자

appServlet이라는 이름으로 class를 만들어서
DispatcherServlet을 만들 것임

앞에 "/"가 붙어있으면 다 여기로 들어온다는 뜻
얘가 실행되는 순간 서블릿 자동으로 만들어짐(매니저 만들 필요 없음)
==> POJO만 만들어주면 된다.

생성해본다.

손쉽게 컨트롤러(알바생) 생성했다..
그러나 컨트롤러와 모델 등을 각자 구분할수가 없음
==> POJO에게 구분할 수 있게 라벨 붙여줄것

@Controller 임포트 해주면

==> 어노테이션!!(스프링의 핵심)

==> urlMapping
- boardList라는 요청이 오면 BoardController안에 있는 서비스메소드를 실행하겠다.
또, 오버라이드 할 때도 어노테이션 사용했음(주석같이 사용)
그러나 여기서는 디스패쳐서블릿임을 알려주기 위해 반드시 붙여줘야한다.
(빠지면 실행되지 않음)
이제 알바생에게 업무를 줄 차례(메서드 이용)
접근지정자(public) 반환타입(void) 메서드이름((매개변수)) {}
public void BoardList()
==> 업무 알려줌
==> 업무 언제 할 지 알려줌(이 메서드를 언제 사용하면 되는지)
==> 어노테이션으로 알려준다.!!!

request(요청과)mapping(연결시키겠다)

무조건 슬래쉬(/)로 시작해야한다.
주소 context 뒤에 /boardList.do를 입력하면 boardList메서드 찾아서 알아서 실행하라는 뜻
이제 boardList로 이동해보려면?
==> forward이동 시켜주자
- rd 만들어야함
- 매개변수로 경로 지정
url경로 잡을때 context인 webapp 기준으로 하면 좋다.

기존의 forward이용방식!
그러나 페이지 이동도 스프링은 하나로 고정시켜놨다.
==> return으로 view의 논리적인 이름 return!!

return에는 전체경로를 다 적지 않고 파일명만 작성해준다.

ViewResolver 확인해보자.


xml파일 이용해서

이 객체 만들어낸것
이 객체가 존재하는 이유가 바로 return때문
prefix=WEB-INF/views/
suffix=.jsp

이 어노테이션(boardList)과 메서드(boardList)가 매핑되어있는것
boardList가 frontController에게 리턴을 통해 boardList를 리턴해주고있음

==> ViewResolver(간단한일밖에 안하는 녀석)

프론트가 viewResolver에게 요청하면, viewResolver가 완벽한 jsp의 경로를 돌려준다.
스프링 실행할 때는 서버만 실행한 후, 경로로 찾아가는것

Run on Server 실행하면 지금은 404 뜨는게 정상임

매핑된게 없다는 뜻

얘가

얘랑 매핑되어있다는 뜻

여기에 작성해 주면 된다.
**에러원인

여기서 대소문자 구분 잘해줘야한다 ㅠㅠ return을 boardList로 작성해서 찾아가지 못했었던것..

views 폴더 내에 BoardList.jsp파일 생성해준다.
'Spring' 카테고리의 다른 글
| Spring - mysql로 db연동(2) (0) | 2022.06.27 |
|---|---|
| Spring - mysql로 db연동(1) (0) | 2022.06.22 |
| Spring - DispatcherServlet 이용하여 값 출력하기, lombok (0) | 2022.06.21 |
| Spring - MVC패턴 (0) | 2022.06.21 |
| Spring - 설치, 기본설정 (0) | 2022.06.20 |