[Spring _MVC ②] CRUD 게시판 구현 C R 기능 (STS / MVC 패턴 / Mybatis / 스프링 입문 / 백엔드 / 웹개발)
앞서 스프링 게시판을 만들기 전 개발환경 설정을 해줬다.
이제 본격적으로 CRUD 게시판을 만들기 위한 jsp 화면 설계 및 요청 보내기를 해보려한다.
스프링 게시판 구현 C R 기능 실습
1. 화면 첫 페이지 browser.html 생성
가장 첫 화면인 browser.html을 생성해줬다. <a>태그 '게시판 목록'을 누르면 list.do요청으로 게시판으로 넘어가게 해준다.
Controller 에서 list.do 요청을 받아 main으로 리턴하는 메서드와 매핑해줬다.
logger을 통해 콘솔창에 메서드가 실행될 때마다 어떤 메서드가 실행되는지 알 수 있게 추가했다.
main.jsp를 만들어줘서 잘 넘어가는지 확인도 해줬다
2. 게시판 목록이 있는 main.jsp 생성
게시판 목록을 출력해줄 테이블을 만들어줬다.
테이블은 저번에 공부했던 JSTL로 만들어줬다.
forEach의 list를 dto로 넘겨 for문 반복을 통해 나눠갖는다.
3. Controller > Biz > Bizimpl > Dao > DaoImpl
3.1 Controller > Biz
Controller에서 main의 forEach에서 썼던 list값을 biz의 selectList() 메서드로 가져온다고 명시해준다.
그 전에 biz를 변수 선언해주며 의존성 주입도 해줬다.
3.2 Biz > BizImpl > Dao
biz 메서드의 내용은 implements로 상속받은 bizimpl에서 작성해준다.
bizimpl를 @Service 어노테이션 선언도 해줘서 이 bizimpl이 진짜 Service 역할을 해준다고 명시해줬다.
selectList() 메서드는 또 dao의 selectList()로 넘겨준다.
biz때처럼 dao를 변수 선언해주며 의존성 주입도 해줬다.
3.3 Dao > DaoImpl
dao의 메서드 내용도 implements로 상속받은 daoimpl에서 작성해준다.
daoimpl도 @Repository 어노테이션 선언을 해줘서 이 daoimpl이 진짜 Repository 역할을 해준다고 명시해줬다.
또 꼭 해줘야 하는 과정이 SqlSessionTemplate 설정이다.
이 작업은 dao와 DB가 연결하고 연결해제하는 시점을 관리하는 작업으로 mybatis-spring 라이브러리에서 제공하는 클래스인 SqlSessiontemplate으로 한다.
간단히 생성자를 Autowired로 주입해준다.
selectList() 메서드 안에 내용을 작성해준다.
list 변수를 만들어 이 list를 board-mapper의 selectList와 매핑해줬다.
4. board-mapper
dao에서 썼던 것처럼 board-mapper의 별칭을 myboard로 정해줬다.
그리고 select쿼리문을 작성해줬다. select 쿼리문의 id는 dao에서 biz에서 만들어 놓은 selectList로 적어준다.
쿼리문을 작성할때 ; 를 붙이면 안된다. 그리고 이 결과는 resultMap형식으로 위에 작성해 놓은 대로 반환해주기로 한다.
5. DaoImpl > Dao > Bizimpl > Biz > Controller
DaoImpl에서 list에 board-mapper의 selectList 결과값을 담아 리턴해줬다.
그리고 dao로 bizimpl로 biz로 controller로 가져온다.
그리고 실행해주면 된다.
잘 실행이 되는 걸 볼 수 있다.
이번에는 제목을 누르면 상세한 게시글 내용을 볼 수 있게 해준다.
이 과정을 몇가지만 바꾸고 반복해주면 된다.
6. main.jsp
제목을 누르면 bd_no에 맞게 게시글 한개를 selectOne 해오는 요청인 one.do를 보내준다.
7. Controller > Biz > Bizimpl > Dao > DaoImpl
one.do 요청을 one()메서드와 매핑해줬다. logger을 통해 one.do가 실행될때 콘솔창에 'SELECT ONE'이 출력되게 해줬고 biz의 selectOne() 메서드를 통해 dto를 가져오게 해줬다.
그리고 selectone.jsp로 리턴해준다.
+ selectone.jsp 를 미리 만들어줬다.
controller에서 biz selectOne()으로 또 bizimpl로 그리고 dao로 daoimpl로 넘겨줬다.
daoimpl에서는 board-mapper에서 쿼리문의 아이디인 selectOne의 결과를 dto 변수에 담아주기로 했다.
board-mapper에서 쿼리문을 작성해주면 되는데
일단 select문이니 <select>로, id는 selectOne으로, 같이 넘겨준 bd_no의 parameterType인 int를 명시해줬다.
이대로 다시 daoimpl > dao > bizimpl > biz > controller로 넘어와
dto값을 넘겨준다.
그리고 실행하면 이렇게 아주 잘 뜨는 걸 볼 수 있다.
여기까지가 R 기능이다.
이제 C 기능 글쓰기를 해본다.
1. main.jsp
main.jsp에서 글쓰기 버튼을 누르면 insert.do 요청을 보내기로 한다.
controller에서 insert.do 요청을 받아 insert.jsp로 단순히 페이지 전환을 해준다.
2. insert.jsp
글쓰기 테이블을 만들어줬다.
form으로 만들어 완료버튼을 누르면 bdinsert.do 요청을 보내기로 해줬다.
3. Controller > Biz > Bizimpl > Dao > DaoImpl
Controller에서 bdinsert.do 요청을 받아 biz의 insert로...
biz는 bizimpl로 그리고 dao로 또 daoimpl로 보내준다.
daoimpl에서는 insert() 메서드의 내용을 완성해줬다.
res에 board-mapper의 insert() 결과를 담아준다.
4. board-mapper
id는 insert로 insert 쿼리문을 실행해준다.
그리고 그 값을 다시 daoimpl에서 res에 담아 dao로, bizimpl로, biz로, controller로 보내준다.
res를 넘겨받아 res값이 있다면 = insert가 잘 되었다면 목록으로 리턴해주고,
아니라면 다시 글쓰기 페이지로 리턴해준다.
그 후 실행해주면 글쓰기가 잘 되는 걸 볼 수 있다.
그 다음은 CRUD 게시판 구현의 UD 기능을 실습해보겠다.