13.공지사항 세부사항
공지사항 세부사항
순서
1.Mapper 처리
2.Service 처리
3.Controller 처리
4.뷰처리
1.Mapper 처리 및 테스트
- NoticeMapper.java
//상세페이지
public NoticeVO Noticedetail(int nno);
// 조회수
public void increase(int nno);
- NoticeMapper.xml
<!--상세페이지 -->
<select id="Noticedetail" resultType="com.supermm.model.NoticeVO">
select * from ANOTICE where nno = #{nno}
</select>
<!--조회수 -->
<update id="increase">
update anotice set nhit = nhit +1 where nno = #{nno}
</update>
2.Service 처리
- NoticeService.java
//상세페이지
public NoticeVO Noticedetail(int nno);
- NoticeServicelmpl.java
//조회수
public NoticeVO Noticedetail(int nno) {
noticemapper.increase(nno);
return noticemapper.Noticedetail(nno);
}
상세페이지에서 조회수 메소드를 선언하고 글 번호를 가지고 반환한다.
3.Controller 처리
- NoticeController
// 상세페이지
@GetMapping("/notice-detail")
public String Noticedetailget(int nno, Model model) throws Exception {
model.addAttribute("list", noticeservice.Noticedetail(nno));
return "admin/notice/notice-detail";
}
model 객체로 데이터를 받아서 notice-detail으로 반환한다.
4.뷰처리
<form id="detailForm" class="input-form" style="border:none"
action="<c:url value='notice-update?nno=${list.nno}'/>" method="post">
<table class="table">
<tbody>
<tr>
<td colspan="12">
<div class="content">
<span class="m-2 fw-bold">번호</span>
<input class="w-20" value="${list.nno}" style="border:none; margin-left:20px" readonly/>
</div>
</td>
</tr>
<tr>
<td colspan="12">
<div class="content d-flex">
<span class="m-2 fw-bold">제목</span>
<input class="w-20"
type="text" name="ntitle" value="${list.ntitle}" style="border:none; margin-left:20px" readonly/>
</div>
</td>
</tr>
<tr>
<td colspan="12">
<div class="content d-flex">
<span class="m-2 fw-bold">작성자</span>
<input class="w-20" type="text" name="nwriter_id" value="${list.nwriter_id}" readonly="readonly" style="border:none; margin-left:10px"/>
<span class="m-2 fw-bold">조회수</span>
<input class="w-20" type="text" name="nwriter_id" value="${list.nhit}" readonly="readonly" style="border:none; margin-left:10px"/>
</div>
</td>
</tr>
<tr>
<td colspan="12"><textarea class="w-100" rows="20"
name="ncontent" id="notice_textarea" style="border: none; padding:10px" readonly>${list.ncontent}</textarea>
</td>
</tr>
<!-- <script>
CKEDITOR.replace('notice_textarea');
CKEDITOR.editorConfig = function(config){
config.enterMode = CKEDITOR.ENTER_BR;
};
</script>
-->
</tbody>
</table>
controller에서 넘어온 데이터 값과 맞게 el태그를 이용하여 작성한다.
<div class="text-center ">
<div class="text-center inputdiv">
<a class="btn ok" href="/notice-update?nno=${list.nno}" >수정</a>
<a href="<c:url value='/notice-delete?nno=${list.nno}'/>" onClick="alert('삭제하시겠습니까?')"class="btn reset" >삭제</a>
<a href="notice-list" class="btn golist">목록</a>
</div>
</div>
</form>
<form id="infoForm" action="/notice-update" method="get">
<input type="hidden" id="nno" value='<c:out value="${list.nno}"/>'>
</form>
</main>
버튼을 누를 시 해당 넘어 갈 수 있도록 url을 설정한다.
nno 같은 경우 사용하지 않지만 계속 필요하기 때문에 hidden을 이용하여 값을 가져간다.
댓글남기기