-
JSP 자세한 글 목록 MVC model2로 구현하기Servlet-JSP 2022. 2. 10. 18:19
** 유튜브 뉴렉쳐님의 강의를 보면서 공부한 내용을 정리 한 것입니다.
지난시간에는 JSP를 이용해서 구현한 자세한 글 목록을 MVC model1로 바꿔보는 시간을 가졌는데
https://talkpotato.tistory.com/78?category=1070372
JSP 자세한 글 목록 MVC model1로 구현하기
** 유튜브 뉴렉쳐님의 강의를 보면서 공부한 내용을 정리 한 것입니다. 지난 시간에 자세한 글 목록을 구현 해 보았었다. https://talkpotato.tistory.com/77 JSP 서블릿으로 자세한 페이지 구현하기 **유튜
talkpotato.tistory.com
오늘은 이것을 MVC model2 패턴으로 바꾸어 볼 것이다.

model2패턴은 한페이지에 mvc를 모두 작성하는 것이 아니라 컨트롤러와 뷰단을 다른 페이지로 나누어주는 방식이다.
model1은 지역적으로 한페이지에 만드는데에 비해 model2는 나눠서 만들어서 다소 복작해지는것이 단점이겠지만 장점으로는
1. 유지보수 용이
2. 재사용성이 좋음
3. 실행면에서도 좋다.
view단의 경우 요청이 올 때 그때마다 만들어지고 컴파일되어서 실행성능에서도 더 좋아진다.
model2fh 만들때에는
model을 controller이라는 서블릿이 만들어서 view라는 서블릿에 전달하기 위해서는 상태저장 방법이 필요하다.
상태를 저장하기 위한 객체는
pageContext/request/session/application 객체가 필요하게 되는데
model을 컨트롤러와 뷰단이 공유하기 위해서는 이 네가지 중에서 request/session/application 만 가능하다.
이 세가지 중에서도 범위가 가장 작은 request를 사용하는 것이 가장 적합하다.
컨트롤러를 뷰단에 출력 할 때 모델을 request에 담아서 전달을 하면 된다.
우선 지난시간에 jsp페이지에 작성했던 java코드를 잘라내기 해 준 다음 새로운 패키지와 클래스를 추가 해 준다.

controller 패키지와 클래스 생성

만들어진 클래스에 extends를 이용해서 httpservlet을 상속 받아 주고 webservlet으로 경로를 지정 해 준다.
서비스 함수를 추가 할 것인데 service 함수를 추가 할 것인지 doGet에 특화된 함수를 추가할것인지 결정하면 되는데
특화된 서비스 함수를 써 주자.
그리고 이제 jsp 파일에서 잘라내기 한 java 코드를 붙여넣기 할건데

이렇게 쭉 빨간줄이 뜬다.
connection에 마우스를대고 ctrl+shift+o를 해주면 임포트 할 패키지에 대해서 뜬다.


이렇게 두개를 임포트 해 준다.

그래도 여전히 빨간줄이 떠 있는데 우선 classforname를 예외처리 해 준다.
그리고 나서 나머지 밑에 코드 블럭을 try안에 넣어준다.

그래도 아직 예외처리가 부족한가보다
drivermanager에 마우스를 가져다대면 예외처리에 대한것이 세가지가 뜨는데 우리는 첫번째 꺼를 클릭해서 새로운 catch 블럭을 추가해주도록 하자

이렇게 catch블럭을 하나 더 추가 해 준다.

이제 이녀석들을 view단에 넘겨줘야 하는데 문제는 이제는 jsp단을 실행하면 안된다는 것이다. 컨트롤러를 먼저 실행해서 jsp단이 실행 되도록 해줘야하는데 컨트롤러를 통해서 jsp를 실행하기 위한 방법을 알아보자

서블릿에서 서블릿으로 이동 할 때에 쓰는것은 이렇게 두가지 방법이 있다.
우리는 forward 방식을 사용 할 것이다.
forward를 사용하는데에는 dispatcher라는 것이 있는데 dispatcher는 request를 통해서 얻을 수 있다.

이럼 notice/datail을 요청하면서 request와 response를 공유 할 수 있게 되는 것이다.

윗쪽에 작성해주고
이제 뷰단에 가서

getAttribute로 심어준다.
이제 실행해봐야하는데 컨트롤러에서 실행을 해야한다
실행하기 앞서서 어떠한 id에 대한것을 받아올것인지 확인해야하는데 이걸 확인 하려면 list페이지에서 실행을 해야한다
list페이지는 아직 스파게티 코드로 되어있는데 이것도 다 고쳐줘보자
우선 list.jsp에서 detail.jsp?id 였던 경로는 jsp를 지워줘야한다.

이렇게
'Servlet-JSP' 카테고리의 다른 글
Servlet/JSP Model 데이터를 구조화하기 (0) 2022.02.10 JSP 자세한 글 목록 MVC model1로 구현하기 (0) 2022.02.09 JSP 서블릿으로 자세한 페이지 구현하기 (0) 2022.02.08 JSP-JDBC를 이용하여 글 목록 구현하기 (0) 2022.01.26 JSP-게시판 인덱스 코드블럭으로 만들기 (0) 2022.01.26