7. 수정 페이지

bbsDelUpdate.jsp
글 수정하고자하는 행 가져오는 페이지
1. bbsUpdate.jsp
(1) 글 번호 가져와서 읽기

(2) 폼에 작성했던 것 변수로 가져오기

- <%= dto.get변수명() %>
비빌번호엔 변수를 가져오지 않는다. 비밀번호가 일치하는지 확인해야 한다.
(3) 웹브라우저 확인

(4) name값 대입하기

- wname, subject, content의 값은 form에 있다.
- 분홍색 박스를 bbsUpdateProc에 보내주는 것인데
bbsno는 분홍색 박스에 값이 없다.
➡️ 사용자에겐 노출시키지 않는 hidden 값을 주어서 bbsno값을 만들어준다.


<input type="hidden" name="bbsno" value="<%=bbsno%>">
이 코드를 담아준다.
(5) 페이지 소스보기도 반드시 확인

<input type="hidden" name="bbsno" value="<%=bbsno%>">
이 코드가 들어가있는지 확인한다.
bbsUpdateProc.jsp
글번호와 비밀번호가 일치하면 행 수정해주는 페이지
1. bbsUpdateProc.jsp
(1) ssi import

(2) bbsUpdate.jsp에서 수정 요청한 정보 가져오기

- bbsUpdate.jsp 폼에 입력했던 값의 name을 확인한다.

- bbsUpdate.jsp의 값을들 request로 가져와서 변수에 담는다.
(3) dto에 담기

- dto 객체에 담는다. (net.bbs/BbsDTO.java 확인하면 된다.)
(4) updateproc 함수(BbsDAO.java에 작성할 예정)에 담고 비밀번호 일치여부 출력시키기

2. BbsDAO.java
(1) int cnt = dao.updateproc(dto); sql문 가져오는 함수 작성하기
- 행 수정 sql문

- sql 가져오는 함수 작성

bbsReplay.jsp
답변페이지
답변쓰기 게시판은 테이블을 1개를 생성할지 2개를 생성할지 결정해야한다. 보통 테이블을 2개생성하는 것이 편하다.

- 부모와 자식 테이블이 나오는데, 부모 테이블에 있는 글 한개 안에 여러개의 글이 또 들어갈 수 있다. (부모의 빨간색 글과 자식테이블의 빨간색 글 3개)

- 두 테이블을 하나로 묶어 하나의 테이블로 할지, 따로 두개의 테이블로 나눌지 업무분석에 따라 달라진다.

- grpno 그룹번호, indent 들여쓰기, ansnum 글순서
부모와 자식테이블을 공통으로 묶어주고, 다른 그룹과 구분시켜주는 칼럼들

- child의 초록색글들의 마지막글에만 답변이 달리면, 주황색부분의 부모는 바로 위에있는 초록색글이 부모가 된다.
- 노란색의 부모는 주황색으로 바뀐다.
- 초록색의 화살표 1개, 주황색은 2개, 노란색은 3개
indent에 기억을 시킨다.
indent가 1개면 리플기호 1개 찍어주고
indent=2개면 리플기호 2개 찍어준다.
- ansnum : insert하게되면 순서가 차례로 들어가지 않고 뒤죽박죽으로 들어간다.
순서대로 번호를 기억하기 위해서 ansnum에 넣어준다. (정렬시켜주는 것.)
[답변쓰기 알고리즘]




1. bbsList.jsp

(2) 답변 이미지 출력

(3) 결과는 Replay.jsp 제작 한 후 확인
2. bbsRead.jsp
답변쓰기 버튼에 url 번호 변수넣어주기

3. bbsReply.jsp
(1) bbsRead.jsp에 적용한 답변쓰기 버튼


- bbsRead.jsp 페이지에서 → bbsReplay.jsp로 넘어가는 것이다.

(3) 폼에 기능 넣기


웹브라우저 확인

4. bbsReplyProc.jsp
(1) bbsUpdateProc.jsp에서 복사해오기

(2) BbsDAO.java에서 int cnt = dao.reply(dto); 함수 작성하기
- 이 부분의 함수를 작성한다.

- try-catch문 작성하고 준비

- 1) 부모글 정보 가져오기(select문)

- 2) 글순서 재조정하기(update문)

→ 바로 밑에 작성해서 sql에 넣어줘야하는데 sql문이 이미 들어가있어서 sql값을 지우고 sql = new StringBuilder();을 재활용한다.
→ 새로운 변수로 생성해도 된다.
기존에 들어가있던 sql문 지우고 변수 재활용 하기
⚠️ 에러 - BbsDAO
(1) 2번 글순서 재조정에서 pstmt 변수 선언 안했음..

(2) ansnum 오타 ansum으로 오타
검색기능
1.bbsList.jsp
글 목록 페이지에 검색 기능 넣기
검색기능 참조사이트 (공지사항)
https://www.egovframe.go.kr/

- 파스타라는 글을 검색하면 파스타만 나오도록 하는 것.
bbs 폴더 백업해서 쓰기 (실수할 수도 있어서)

(1) 검색시작, 끝 코드 작성
<form action="bbsList.jsp">

→ 액션은 bbsList에서 bbsList로 똑같은 페이지로 간다.
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
- 똑같은 페이지로 가는 이유


→ 검색한다고 해서 페이지가 바뀌는 것이 아니다.
→ 공지사항 페이지에서 검색어를 입력하면 똑같은 페이지 내에서 파스타 단어가 포함되어 있는 것만 나오기 때문이다. 게시글만 바뀌고 페이지는 변하지않는다.
(2) 목록버튼 + 검색창 + 버튼 만들기
웹 브라우저 확인

(3) col(카테고리)과 word(검색창)는 계속 반복적으로 가져올 것이기 때문에 ssi.jsp 공통코드에 넣기

- Utility.java - null공백을 문자형으로 변경해주는 함수 사용

- ssi.jsp

(4) 글개수 찍어보고 가기

- sql문 먼저 작성해보기

- BbsDAO.java 에 sql문 적용하는 함수 작성하기

⚠️ 오류 ㅡㅡ 이 부분 빼먹음

웹 브라우저 확인 (글개수만 확인!)

→ 글개수 2건이 나오는 걸 확인할 수 있다.
→ 아직 게시판에 검색한 게시물만 나오도록 하는 기능은 구현하지 않았음. 글 개수만 확인하기
(5) 검색창에 입력하지 않고 제출했을 때 경고창 띄우기 myscript.js
- form에 return시켜주는 searchCheck() 기능 코드 추가해주기

- myscript.js에서 function작성

(5) 웹브라우저 확인

→ 검색어에 아무것도 입력하지 않으면 입력창이 뜬다
⚠️ [오류] 제출 버튼 눌렀는데 알람창이 뜨지 않음
오류 확인방법
- 페이지소스보기

- javascript src 클릭하고

- js 작성했던 코드가

- 페이지 소스보기에 적용되지 않았었다. (원래 저 부분이 들어가있지 않았음)

오류 해결방법
- refresh 2. valiade 3. clean 하고,
- 인터넷 쿠키삭제 하면 된다!
[교재] 처음 해보는 Servlet & JSP 웹 프로그래밍 참조
