본문 바로가기
boostcource/boostcourse_web programming

Servlet & jsp 연동

by sgyeong 2024. 4. 19.

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