관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

MVC 패턴(모델 2)을 사용한 게시판 5 - 게시글 리스트를 위한 JSP 페이지 와 액션 클래스 본문

웹 · 앱 개발/JSP & Servlet

MVC 패턴(모델 2)을 사용한 게시판 5 - 게시글 리스트를 위한 JSP 페이지 와 액션 클래스

huenuri 2024. 12. 16. 16:55

이제 요청을 받으면 게시글 리스트 화면을 표시하기 위한 액션 클래스(모델)를 만들어보겠다.


 

 

 

 

[직접 해보기] 게시글 리스트를 위한 액션 클래스

 

게시글 리스트를 위한 서블릿 클래스에서는 데이터베이스에서 게시글 정보를 얻어와 이를 어레이리스트형태로 게시글 리스트 화면으로 보낸다. 게시글 리스트 화면에서는 게시글 리스트를 출력할 뿐만 아니라 게시글 상세 보기와 게시글 등록 페이지로 이동한다.

 

게시글 리스트를 위한 페이지는 board 폴더에 추가한다. board 폴더를 만든 후에 boardList.jsp 페이지를 이 폴더에 추가한다.


 

 

 

 

 

[직접 해보기]  게시글 리스트를 위한 JSP 페이지

 

boardList.jsp는 바로 실행할 수 없다. boardList.jsp로 실행하여결과값을 얻어오려면 커맨드에 따라 알맞은 작업을 처리하기 위한 명령 처리 클래스인 ActionFactory를 다음과 같이 수정해야 한다.


 

 

 

 

 

[직접 해보기] 커맨드 패턴으로 작업 처리를 위한 명령 처리 클래스 ActionFactory 수정하기

 

 

 

BoardServlet를 실행하면 이처럼 오류가 뜬다.

 

문제가 있는 것이 아니라 여기서 쿼리스트링으로 요청을 해야 해당 페이지가 나타난다.

 

 

 

 

 

여기서 게시글 등록 링크를 클릭하면 게시글 등록 화면으로 이동한다. 게시글 등록을 클릭하면 "BoardServlet?command=board_write_form"이 요청되어 게시글 등록 페이지로 이동해야 하기 때문에 액션 클래스를 만들고 이 요청을 처리할 코드를 ActionFactory에 추가해야 한다.

액션 클래스에서는 게시글 등록 화면으로 이동하도록 한다.


 

 

 

 

 

[직접 해보기] 게시글 등록을 위한 폼으로 이동하게 하는 액션 클래스


 

 

 

 

[직접 해보기] 게시글 등록 화면을 위한 JSP 페이지


 

 

 

 

 

[직접 해보기] 커맨드 패턴으로 작업 처리를 위한 명령 처리 클래스 ActionFactory 수정하기

 

게시글 정보를 입력하고 등록 버튼을 클릭하면 <form> 태그에 aciton="BoardServlet"를 지정하였기에 서블릿이 요청을 받아 처리하게 된다. 커맨드 방식으로 작업을 처리하기 때문에 히든 태그로 command 파라미터를 서블릿에 전달한다.

<input type="hidden" name="command" value="board_write">

 

이 요청을 처리할 코드를 액션 클래스로 만들고 ActionFactory에 추가한다. 액션 클래스에서는 입력된 게시글의 정보를 데이터베이스에 추가하도록 한다.


 

 

 

 

 

[직접 해보기] 게시글을 데이터베이스에 추가하기 위한 액션 클래스


 

 

 

 

 

[직접 해보기] 커맨드 패턴으로 작업 처리를 위한 명령 처리 클래스 ActionFactory 수정하기

 

게시글 제목을 클릭하면 게시글 상세보기 화면으로 이동한다. 그전에 먼저 게시글을 등록해야 하는데, 조금 전에 게시글 등록 링크를 클릭하면 이 페이지로 이동한다.

 

 

 

 

 

 

 

이렇게 게시글을 등록했는데 게시글 목록이 보이지 않는다.

 

 

 

 

분명 등록했는데 아무것도 안보인다. close() 메서드에서 ResultSet, Statement, 그리고 Connection이 null인지 확인하지 않고 바로 close() 메서드를 호출한다. 이런 경우, 객체가 null일 때 NullPointerException이 발생할 수 있다.

 

 

 

이 코드를 아래와 같이 수정했다.

 

 

 

 

그리고 여러가지 코드를 수정했지만 1시간이 다 되도록 문제를 해결할 수 없었다. 정말 힘들다..


 

 

 

 

학습을 마치고

그냥 우선 넘어가기로 했다. 아무리 해도 무슨 문제인지 알 수가 없다. 하지만 난 문제를 결코 포기하지 않으니 아마 저녁 무렵이나 늦어도 내일쯤이면 문제를 해결하게 될 것 같다. 나를 믿고 조금 더 기다려보자. 아직은 이 단원을 넘어가기보다 배워야 할 게 있나 보다.