servlet과 jsp는 서로 상호 보완적인 관계이다.
servlet은 로직을 구현하기에 알맞지만, HTML을 출력하기엔 불편하다.
반면 jsp는 로직을 구현하는 것은 불편하지만 HTML을 출력하기엔 편리하다.
때문에 servlet과 jsp를 좀 더 잘 사용하기 위해서 forward가 사용되는 경우가 많다.

servlet은 java파일이기 때문에 프로그램 로직이 수행되기에 유리하다. IDE에서 지원을 잘 해준다.
jsp는 결과를 출력하기에 유리하다.
프로그램 로직 수행은 servlet에서, 결과 출력은 jsp에서 하는 것이 유리하다.
servlet과 jsp의 장단점을 해결하기 위해서 servlet에서 프로그램 로직이 수행되고, 그 결과를 jsp에 forwarding하는 방법이 사용되었다. 이를 servlet과 jsp연동이라고 한다.
먼저 LogicServlet을 만들어준다.

url mappings는 /logic 으로 수정해준다.

어떤 특정한 방식으로 받아낼건 아니기 때문에 doGet과 doPost는 체크 해제해주고, service만 체크해서 오버라이드 해주 Finish해준다.

1부터 100까지 랜덤한 값 2개를 만들어주고,
두 값을 더한 값을 result에 넣어준다.

각각의 변수를 request에 맡겨둔다.

requestDispatcher 객체를 사용해 forward해준다.

실제 요청하고자 하는 주소를 넣어줄 때 만약 주소가 webContents 밑에 있는 것이 아니라 그 아래 jsp디렉토리 안에 위치한다면 /jsp/result.jsp 처럼 앞에 반드시 디렉토리를 넣어준다.
forward할 때는 반드시 request, response 객체를 넘겨줘야 요청이 들어왔을 때 만들어진 요청 객체, 응답 객체를 적절하게 사용할 수 있다.
다음으로 로직에서 수행한 결과를 출력해낼 jsp를 만들어준다.

request로부터 각각의 값을 꺼내온다.

꺼내온 값을 출력해준다. 출력할 때는 표현식 <%= %> 을 사용한다.

LogicServlet에서 실행한 결과

이때 forward를 했기 때문에 실제 url은 바뀌지 않는다.
코드를 EL 표기법으로 변경

결과는 같다.

참고 : boostcourse https://www.boostcourse.org/web316/lecture/16706?isDesc=false
웹 프로그래밍(풀스택)
부스트코스 무료 강의
www.boostcourse.org
'boostcource > boostcourse_web programming' 카테고리의 다른 글
| Page scope (0) | 2024.04.19 |
|---|---|
| Scope (0) | 2024.04.19 |
| Forward (1) | 2024.04.18 |
| 리다이렉트 (redirect) (1) | 2024.04.18 |
| JSP -2 (0) | 2024.04.15 |