내가 복습할 때 보려고 실습하면서 정리해둔 흐름노트
적어두고 싶은건 많은데 빨리 만드는게 우선이었어서
최대한 간략하게 적었다 (두서가 없다는 말)
나중에 수정보자는 마음으로 일단 업로드하고 틈틈히 추가할 예정 현재의 나.. 추가할 시간 없음 ㅋㅋㅋㅋㅋㅋㅋㅋ
완전 스프링 입문자의 시선에서 정리한 것!!!!!
왜냐하면 내 첫 스프링 실습이었기 때문에 ㅠㅠ
완성된 프로젝트 파일은 github에 올려두었습니다~
https://github.com/earth-space/Study.git
게시판 만들기 프로젝트
1. 글 작성, 수정, 삭제 + 게시글 목록 보기
2. 댓글 기능, 에디터 기능, 페이징 기능 추가
1번 먼저 수행해서 만들었고 이후에 2번을 추가했다
뷰=JSP, 매퍼=SQL문(DB처리)
숫자-숫자. (ex 2-1.) 는 이후에 추가된 부분이며 날짜를 기입해둘 것
기존 로직에서 수정한 부분은 녹색으로 표시, 작성할 것
0. 메인 페이지 - 로그인/회원가입(home.do, loginProcess.do, joinProcess.do)
이 부분은 정신없이 만들어서 흐름 정리를 못했다 ㅠㅠ
0-1. 아이디 중복체크
https://kuzuro.blogspot.com/2018/04/16.html
참고하였음
1. 게시판 보기(viewBoard.do) -> 변경 main.do
index.jsp 뷰에서 게시판 목록 보기(버튼)을 클릭하면 do의 경로로 가고
컨트롤러에서 viewBoard()를 취한다
mapper에서 sql문으로 select해서 boardVO에 담아 돌려준다
이 결과를 model의 속성값으로 추가하는데 이름은 board로 한다
그리고 index.jsp 뷰로 띄운다
+수정
게시판 목록 보기 버튼을 없애고 viewBoard.do를 main.do 로 바꿈
메인 페이지에서 바로 게시판 목록이 보이도록 함
+추가
게시판을 보여주는 viewBoard 함수랑 연결되는 mapper SQL 문 수정!
게시글에 달려있는 댓글 수도 보이도록 replyCount를 boardVO에 추가해줌
2. 글 작성하기(writePage.do)
index.jsp 뷰에서 글쓰기(버튼)을 클릭하면 do의 경로로 가고
컨트롤러에서 write.jsp 를 리턴한다
write.jsp 뷰가 뜬다
2-1. 텍스트 에디터 넣어주기(summernote 활용) add. 2021-02-01
wirte.jsp에서 textarea 부분에 에디터를 넣어주었다 summernote를 사용
summernote 에디터 중앙 정렬 때문에 삽질…
크롬 개발자 도구로 클래스 이름 확인하고 jsp에 가서
그 클래스에 스타일을 먹여줘서 중앙 정렬되도록 했다 성공!
3. 글 저장하기(writeProcess.do)
write.jsp 뷰에서 글을 쓴뒤 완료(submit, 버튼)을 클릭하면 form이 action을 취해서 do의 경로로 가고
컨트롤러에서 HttpServeltRequest로 쓴 글의 정보를 req로 받아와 boardTitle, boardContent로 저장한다
writeProcess에 boardTitle과 boardContent를 전해준다
매퍼는 받은 정보를 insert해서 보드에 게시글을 추가한다
다시 redirect main.do로 간다
+ vo 전달하는걸로 수정함
3-1. 전자정부 파일첨부 (WriteProcess.do 수정) add. 2021-02-02
https://ming9mon.tistory.com/66
여기 보면서 따라하고 읽어보기
페이지 참고해서 업로드 다운로드 모두 구현 성공 (Multipart 이용)
4. 글 상세보기(viewContent.co)
viewBoard.do 에서 글의 제목(href)를 누르면
boardNo=${board.boardNo}의 경로로 보내고 누른 게시글의 no값을 컨트롤러에 보낸다
컨트롤러에서 boardNo를 받아 viewContent()라는 메소드를 실행하고 속성값에 content라고 저장한다
매퍼에서 boardNo에 해당하는 boardContent와 등등 필요한 부분을 select 해준다
model에 다시 담아서 viewContent.jsp에 보낸다
뷰에서는 content로 받은 부분을 출력한다
4-1. 댓글 보기 추가(viewReply()) add. 2021-02-03
먼저 ReplyVO를 만들어주고, oracle에 reply라는 테이블 생성! (src-resources-reply.sql 참고)
viewContent.jsp를 수정해서 게시글 아랫단에 댓글 쓰는곳 바로위에 댓글 리스트 공간 만듬
폼으로 session의 userId, 인풋의 내용, 게시글의 no까지 받아 컨트롤러로 전달
viewReply() 재정의 하고 viewContent.do 부분 컨트롤러에서 받아온 no로 MainMapper에 select 실행해서 List<ReplyVO>형태로 가져와서 모델에 담아 뷰로 다시 보냄
뷰에는 c:if, c:forEach 태그를 이용해서 댓글들을 하나씩 보여줌
4-2. 댓글 달기 추가(writeReply()) add. 2021-02-03
viewContent.jsp를 수정해서 게시글 아랫단에 댓글 박스 추가!
폼으로 session의 userId, 인풋의 내용, 게시글의 no까지 받아 컨트롤러로 전달
writeReply()라는 함수 정의해주고 insert문까지 매퍼에 구현한다 그리고 함수를 사용해서 폼으로 받아온 내용을 데이터베이스에 저장한다
4-3. 댓글 수정/삭제(updateReply, deleteReply()) add. 2021-02-04
viewContent.jsp를 수정해서 보이던 댓글 리스트에 내 댓글일 경우 수정, 삭제 버튼이 뜨도록 구현
<c:if test="${sessionScope.userId == reply.replyWriter}"> 이런 식으로.. 이 c태그 안에 버튼 두개 구현하는데 수정은 updateReply.do 로, 삭제는 deleteReply.do 로 매핑되게 컨트롤러에서 받아준다
updateReply.do는 페이지로부터 boardNo와 replyNo를 받아와서 원래의 viewContent.jsp 페이지에서 댓글만 수정할 수 있도록 원래의 게시글 vo도 넘겨주고 댓글리스트 vo도 넘겨준다
그리고 댓글을 수정하는 페이지인 updateReply.jsp 를 하나 더 만들어준다
이 updateReply.jsp는 사용자가 누른 댓글의 내용만 text박스로 가져와서 수정할 수 있도록 보여준다
수정이 완료되면 수정한 내용을 폼으로 보내고 updateReplyPro.do로 가서 수정할 replyNo의 내용을 update해준다 그리고 다시 redirect로 viewContent.do에 가서 게시글을 보여줘야하기때문에 boardNo를 redirectAttributes에 추가해서 보내주었다
deleteReply.do는 수정보다 간단하다
삭제 버튼을 누르면 replyNo를 get으로 보내주는데 이것으로 매퍼에서 delete문을 수행해준다
그리고 수정과 마찬가지로 다시 redirect 해서 viewContent.do로 가야하기 때문에 boardNo를 어트리뷰트에 추가해서 보내주었다
5. 글 목록 형태로 보기 (viewBoard.do 수정, PageVO, 페이징 처리)
https://po9357.github.io/spring/2019-05-28-Board_Paging/
참고해서 했다
★새로 배운 것들! – ceil(소수점 올리는 Math함수의 메소드), oracle rownum(순번매기기, https://coding-factory.tistory.com/443 참고)
6. 게시글 수정하기 (updateContent.do, updateProcess.do)
로그인 되어있는 session의 userId가 viewContent.jsp 뷰에서 작성자와 같을 경우
viewContent.jsp 뷰에 수정, 삭제 버튼을 보여준다 ( c:if 태그를 이용함)
수정 버튼을 클릭하면 updateContent.do로 넘어가게 되며 게시글을 작성했었던 것과 동일하게 제목과 내용을 작성할 수 있는 칸이 나오도록 update.jsp 뷰를 띄운다
제목과 내용을 모두 수정한 후 수정 완료 버튼을 클릭하면 updateProcess.do로 넘어가게 되며 새로 입력된 제목, 내용과 게시글의 no를 받아와 컨트롤러에서 vo에 담아준다
그리고 vo를 updateProcess 메소드에 담아 SQL문을 실행해준다
7. 게시글 삭제하기 (deleteProcess.do)
로그인 되어있는 session의 userId가 viewContent.jsp 뷰에서 작성자와 같을 경우
viewContent.jsp 뷰에 수정, 삭제 버튼을 보여준다 ( c:if 태그를 이용함)
삭제 버튼을 클릭하면 boardNo를 가지고 deleteProcess.do로 넘어가게 되며 컨트롤러에서 deleteProcess 메소드에 boardNo를 담아 SQL문을 실행해준다
게시판 캡처 ver. 2021-02-06
뭘 더 추가하게 될지는 아직 미정..
원본 게시글은 주 블로그에 업로드되어있습니다
https://blog.naver.com/jisoo___/222230312161