Model2 - 게시판(R.U : 읽기, 수정하기)

김정훈·2021년 3월 5일
0
post-thumbnail

📌 Model2 게시판 목록 Read

💣답글 부분은 구현하지 않고, 댓글과 대댓글로 구현하는 걸로 변경!

게시글을 읽는데 중요한 파일

⌘ BoardInfoControl.java
⌘ BoardInfo.jsp
⌘ DAO의 getOneBoard() 메소드

게시글을 업데이트 하는데 중요한 파일

⌘ BoardUpdateCon.java
⌘ BoardUpdateProcCon.java
⌘ BoardUpdateForm.jsp
⌘ DAO의 getOneUpdateBoard(), updateBoard()메소드

원래 순서대로는 Create를 하고 나서 그 Create한 게시물의 목록을 먼저 가지고 와서, 페이징처리를 하는 게 맞지만, 페이징이 조금 어려운 부분이라서,
비교적으로 간단한 로직인 C.R.U.D를 먼저 다 정리하고 목록을 읽는 것과, 페이징을 정리하려고 한다.

Create한 글을 우리가 읽을 수 있어야 한다.
Read 바로 2번째 기능이다.
다음은 BoardList.jsp파일이다.
완성본은 있지만, 코드가 확실히 이해되지 않아서 정리가 미뤄지고 있는데,
이번 주 안으로 페이징,목록 처리 부분도 정리해서 올리는 게 목표이다.

✔️ 이번에 구현할 내용을 한 번 보고 코드를 살펴보자.

☑️Read미리보기

제목 부분을 클릭하면 그 글의 정보를 볼 수 있게 코드를 작성했다.

☑️Update미리보기

➡️Read

BoardList.jsp : BoardInfoControl.jsp : BoardInfo.jsp
BoardDAO의 getOneBoard()메소드

그럼 Read 게시글을 읽어오는 코드부터 살펴보자.
BoardList.jsp파일 부분에 a태그, button태그, input태그 세 가지 중 하나로 제목(subject) 부분을 감싸주고,
그 부분을 클릭하면 해당 게시글의 정보인 BoardInfo.jsp부분을 실행하게 할 것이다.
그렇다면 제목을 클릭했다고 가정하고, BoardInfo.jsp코드를 살펴보자.

BoardInfo.jsp코드에 dto라는 부분이 있다. 이 부분은 BoardInfoControl.java쪽에서 넘어오는 부분이다.
=> 지금은 그냥 DB에 있는 글번호, 조회수, 작성자, 작성일 등을 가져오는 역할을 한다고 생각하자.
: 간단하게 BoardList.jsp 부분 코드를 첨부했다.(지금 이 코드는 페이징 정리를 하면서 자세히 다룰 예정이다.


그리고 a태그 부분을 보면 BoardInfoControl?num=${dto.num}으로 넘기는 것이 보인다.
이거는 BoardInfoControl로 맵핑된 Servlet파일로 num값을 dto.num으로 넘겨주는 것이다.(똑같은 말;;;)
ex> 게시3을 클릭할 경우 BoardInfoControl?num=3으로 넘기는 것이다.
⌘순서 : 1.BoardList.jsp - 2.BoardInfoControl.java - 3.BoardInfo.jsp1. BoardList.jsp에서 게시3을 클릭해보자.
2. BoardInfoControl.java로 BoardInfoControl?num=3으로 넘어가고 BoardInfoControl코드를 살펴보자.3. 위 그림에서 num은 BoardInfo.jsp에서 3으로 넘어왔으니 3이 될 것이고, 그러면 이제 bdao.getOneBoard(3) 이렇게 메소드를 실행하게 된다.
BoardDAO의 getOneBoard()메소드를 살펴보자.(1) 1번째 쿼리문은 조회수를 증가시킨다.
(2) 2번째 쿼리문은 게시글에 대한 정보를 가져온다.
(3) 3번째 코드는 2번째 쿼리문에서 가져온 게시물에 대한 정보를 dto객체에 저장시켜준다.
그럼 이 dto객체는 BoardInfoControl.java로 반환시켜주고, BoardInfoControl는 이거를
RequestDispatcher를 통해서 BoardInfo.jsp파일로 넘겨준다.
=> 그러면 이제 BoardInfo.jsp에서 dto객체를 받아서 글의 게시글 정보를 다 읽어와서 출력한다.

BoardInfo.jsp

<h2>게시글 보기</h2>
	<table width="600" border="1">
		<tr height="40">
			<td align="center" width="100">글번호</td>
			<td align="left" width="180">${dto.num}</td>
			
			<td align="center" width="120">조회수</td>
			<td align="left" width="180">${dto.readcount}</td>
		</tr>
		
		<tr height="40">
			<td align="center" width="120">작성자</td>
			<td align="left" width="180">${dto.writer}</td>
			
			<td align="center" width="120">작성일</td>
			<td align="left" width="180">${dto.reg_date}</td>
		</tr>
		
		<tr height="40">
			<td align="center" width="120">이메일</td>
			<td align="center" colspan="3">${dto.email}</td>
		</tr>
		
		<tr height="40">
			<td align="center" width="120">제목</td>
			<td align="center" colspan="3">${dto.subject}</td>
		</tr>
		
		
		<tr height="40">
			<td align="center" colspan="3">
				<input type="button" value="수정하기" onclick="location.href='BoardUpdateCon?num=${dto.num}'">
				
				<input type="button" value="삭제하기" onclick="location.href='BoardDeleteCon?num=${dto.num}'">
				
				<input type="button" value="목록보기" onclick="location.href='ListConnection'">
               		</td>
                </tr>
	</table>
	


::: ➡️Read끝



➡️Update

BoardUpdateForm.jsp : BoardUpdateCon : BoardUpdateProcCon
BoardDAO의 getOneUpdateBoard(), updateBoard()


1. 수정하기를 클릭해서 BoardUpdateForm.jsp로 넘어가보자.
간단하게 BoardInfo.jsp코드도 첨부했다.
2. BoardInfo.jsp에서 수정하기를 클릭하면 BoardUpdateCon으로 맵핑된 곳으로 이동 => BoardUpdateCon.java로 이동한다. 이 코드를 살펴보자.:: getOneUpdateBoard같은 경우에는, Read기능을 구현할 때 쓰인 getOneBoard() 메소드에서 조회수 부분만 뺀 메소드라고 생각하면 된다.

  1. 그리고 RequestDispatcher을 통해서 BoardUpdateForm.jsp쪽으로 dto객체를 넘겨준다. 그럼 이번엔 BoardUpdateForm.jsp의 코드를 보자. 코드의 빨간 박스 부분을 보면 BoardUpdateProcCon부분으로 수정된 내용들을 보내는 것을 볼 수 있다.

    중간정리 : BoardInfo.jsp -> BoardUpdateCon.java -> BoardUpdateForm.jsp -> BoardUpdateProcCon.java

  2. 그럼 이번에는? 당연하다 BoardUpdateProcCon.java 코드를 살펴보자.:"msg", "1"부분은 BoardList.jsp(ListConnection)쪽으로 넘겨준다. 이렇게 BoardList.jsp파일에 이 코드를 작성해서, 비밀번호가 틀릴 경우 alert창으로 오류를 표시하게 된다.
    수정이 정상적으로 되는 경우에는 별다른 거 없이 BoardList.jsp를 띄워준다.

  3. 마지막으로 BoardDAO의 updateBoard()메소드를 살펴보고 마무리해보자. num, subject, content를 받는다. where절에는 num가 쓰이고 update부분에는 subject,content값을 받아온다. 작성자나, 다른 부분도 같이 수정하고 싶다면 sql문과, updateForm, updateProcCon 부분을... 생각보다 많은 곳을 수정해줘야 한다...

⚙️ 오늘까지 C.R.U까지 기능을 완료했다. D같은 부분도 크게 어려운 것은 없다. 여기서 중요한 것은 앞으로 추가할 페이징, 회원가입, 댓글 기능 같은 것들이 될 것 같다.

profile
WebDeveloper

0개의 댓글