코딩공부/Java Spring

[spring 실습] 게시판 만들기 - 상세(Detail) 페이지 추가

integerJI 2021. 1. 1. 17:58

[spring 실습] 게시판 만들기 - 상세(Detail) 페이지 추가


[spring실습] 게시판 만들기 - 글 쓰기 기능 만들기 : integer-ji.tistory.com/341

[spring실습] 게시판 만들기 - 글 수정 기능 만들기 : integer-ji.tistory.com/342

[spring실습] 게시판 만들기 - 글 삭제 기능 만들기 : integer-ji.tistory.com/343

 

이어서 진행됩니다.


게시판에서 이제 제목을 누르면 상세페이지로 이동하는 Detail 페이지를 만들어 줍니다.

 

 

Select Sql문 추가

SELECT
	PRO_ID, 
	PRO_TITLE, 
	PRO_BODY, 
	PRO_DATE
FROM TB_PROJECT
WHERE
	PRO_ID = #{proId}

 

proId의 값을 받아 해당 글의 정보를 뽑아냅니다.

 

 

DAO 추가

List<ProjectVO> detailProject(int proId);

 

selectProjectList를 이용하여 값을 뽑았습니다.

 

proId를 넣은 detailProject의 값을 list에 넣어줍니다.

 

 

Service 추가

List<ProjectVO> detailProject(int proId);

 

ProjectServiceImpl도 추가해 줍니다.

@Override
public List<ProjectVO> detailProject(int proId) {
	
	return projectMapper.detailProject(proId);
}

 

selectProjectList와 마찬가지로 detailProject를 return 해줍니다.

 

 

Controller 추가

@RequestMapping(value = "/projectDetailForm.do")
public String detailProject(@ModelAttribute("projectVO") ProjectVO projectVO, Model model) {

    List<ProjectVO> list = projectService.detailProject(projectVO.getProId());

    model.addAttribute("list", list);
    
	return "projectDetailForm";
}

 

detailProject에 projevtVO에 있는 ProId를 가져와서(get) 값을 넘겨줍니다.

 

해당 값을 넘겨받은 리스트를 list에 저장

 

다시 list란 이름으로 addAttribute 해줍니다.

 

 

projectList.jsp 수정 + projectDetailForm.jsp 추가

  <tr>
    <td>${item.proId}</td>
    <td><a href="${path}/projectDetailForm.do?proId=${item.proId}">${item.proTitle}</a></td>
    <td>${item.proDate}</td>
    <td><a href="${path}/projectUpdateForm.do?proId=${item.proId}">수정</a></td>
    <td><a href="${path}/projectDelete.do?proId=${item.proId}">삭제</a></td>
  </tr>

 

이제 상세 페이지가 생겼으니 proBody(본문) 값은 지워줍니다.

 

Line 32 proTitle를 누르면 상세페이지로 이동

 

 

<body>
	<h1>Project detail</h1>
<c:forEach var="item" items="${list}">
  <tr>
    <td>${item.proId}</td>
    <td>${item.proTitle}</td>
    <td>${item.proBody}</td>
    <td>${item.proDate}</td>
    <td><a href="${path}/projectUpdateForm.do?proId=${item.proId}">수정</a></td>
    <td><a href="${path}/projectDelete.do?proId=${item.proId}">삭제</a></td>
  </tr>
</c:forEach>
</body>

 

detail 페이지도 list 페이지와 같이 list를 item에 넣어 뿌려줍니다. 

 

 

Test

 

Url을 보면 DetailForm으로 파라미터 값을 넘겨 

 

2번째 게시글의 본문을 확인할 수 있습니다.

 

현재는 가독성이 너무 떨어지니

 

다음에는 Bootstrap를 이용해 홈페이지를 꾸며 보겠습니다. 

 

참고 GitHub : github.com/integerJI/spring.git